Почему некоторые языки Microsoft называют “визуальными”? (Визуальный C#, Visual Basic.NET, Visual C++)

Вам необходимо использовать Object в качестве значения Map, поскольку это может быть другое значение Map, List или primitive (String, Integer и т. Д.). Jackson позволяет также манипулировать JSON с использованием типов JsonNode. Нам нужно пройти JSON object, а также JSON array (вы забыли об этом). В этом случае нам необходимо:

  • Десериализовать JSON - JsonNode.
  • Пройдите через JsonNode API.
  • Преобразование в Map

Простая реализация:

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class JsonApp {

    public static void main(String[] args) throws Exception {
        String json = "{\"Key1\": \"value1\", \"Key2\": { \"Key2.1\": \"value2.1\" }, \"Key3\":[{\"pRiMe\":11}]}";
        Map<String, Object> map = convertJsonStringToMap(json);

        System.out.println(map);
    }

    private static Map<String, Object> convertJsonStringToMap(String json) throws IOException {
        ObjectMapper mapper = new ObjectMapper();
        JsonNode node = mapper.readTree(json);
        transformKeys(node);

        TypeReference mapType = new TypeReference<Map<String, Object>>() {
        };

        return mapper.convertValue(node, mapType);
    }

    private static void transformKeys(JsonNode parent) {
        if (parent.isObject()) {
            ObjectNode node = (ObjectNode) parent;

            List<String> names = new ArrayList<>();
            node.fieldNames().forEachRemaining(names::add);

            names.forEach(name -> {
                JsonNode item = node.remove(name);
                transformKeys(item);
                node.replace(name.toLowerCase(), item);
            });
        } else if (parent.isArray()) {
            ArrayNode array = (ArrayNode) parent;
            array.elements().forEachRemaining(JsonApp::transformKeys);
        }
    }
}

Выше кода печатается:

{key1=value1, key2={key2.1=value2.1}, key3=[{prime=11}]}

Мы избавились от небезопасного литья и наша реализация более краткая.

23
задан John Saunders 11 February 2013 в 01:31
поделиться

6 ответов

Я не думаю, что это связано с тем, что сами языки являются «визуальными».

Из статьи в Википедии :

Термин «визуальный» обозначает отношения бренда с другими Microsoft языки программирования, такие как Visual Basic, Visual FoxPro, Visual J # и Visual C ++. Все эти продукты имеют графическую среду IDE и поддерживают быструю разработку приложений для Windows.
24
ответ дан 29 November 2019 в 01:43
поделиться

Я полагаю, что все происходит от какого-то события или выбора названия продукта. А теперь это как раз о бренде.

Я имею в виду, что в наше время вы даже не можете думать о какой-то IDE, называемой Studio, и то же самое можно сказать, например, о Visual Eclipse.

0
ответ дан 29 November 2019 в 01:43
поделиться

Я подозреваю, что все это восходит к исходному Visual Basic . «Визуальной» частью этого был дизайнер пользовательского интерфейса ...

Генератор интерфейса Ruby предоставил «визуальную» часть Visual Basic

6
ответ дан 29 November 2019 в 01:43
поделиться

Эти языки не называются "Визуальными". Продукция "Визуальная".

Это еще до появления .NET. "Visual" Basic был "Visual" из-за графического интерфейса для разработки форм. «Визуальный» C ++ был «визуальным» из-за MFC и мастеров для создания приложения MFC.

10
ответ дан 29 November 2019 в 01:43
поделиться

Думаю, это в основном маркетинговый выбор.

Однако это могло быть связано с тем фактом, что «Visual Studio» - это графический интерфейс, таким образом, способ «визуализировать» ваш код.

2
ответ дан 29 November 2019 в 01:43
поделиться

Использование слова "Visual" стало популярным с выходом Visual C++ версии 1.0; это была первая версия, которая работала в Windows, в то время как другие версии работали в режиме DOS, хотя и могли создавать код, запускаемый под Windows. Это не имеет никакого отношения к языкам, скорее к среде, в которой работает IDE.

5
ответ дан 29 November 2019 в 01:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: