Добро пожаловать на публичный номер: на самом деле это Овен. Галантерея продолжает обновляться......
1. Разбор JSON
Я имею в виду синтаксический анализ: сериализация и десериализация между JSON и JavaObject.
Если ваш проект отделен от фронтенда и бекенда, то вы должны были использовать JSON для взаимодействия с данными, а бэкенд определенно будет включать разбор данных Json, хотя SpringMvc и @requestBody уже помогли нам разобрать и сопоставить с bean-компонентом , но нижний уровень также выполняется с помощью этих библиотек синтаксического анализа JSON (по умолчанию SpringMVC использует Jackson). Когда наш бэкенд напрямую вызывает интерфейсы других сервисов, многие из них также возвращают данные JSON, и нам нужно использовать эти библиотеки для их разбора самостоятельно.
Во-вторых, общая библиотека разбора JSON.
fastjson: библиотека классов синтаксического анализа JSON, созданная Alibaba.Он очень быстрый и предоставляет множество статических методов, которые просты в использовании, но базовая реализация не очень хороша.В процессе синтаксического анализа используется подстрока String, которая имеет хорошую производительность. , но может вызвать утечку памяти.
Gson: Библиотека классов для синтаксического анализа JSOn, созданная Google, но производительность немного хуже, чем у других.
Джексон: Относительно рекомендуемая библиотека разбора JSON с хорошей и стабильной производительностью. Исходный код Джексона размещен по адресу:GitHub.com/faster XML/Просто…
Используйте ObjectMapper для чтения некоторых значений полей в json
String str = "{\"id\":1,\"name\":\"haha\",\"elements\":[{\"age\":1,\"elName\":\"zll\"},{\"age\":2,\"elName\":\"zll1\"}]}";
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(str);
//获取name字段值
JsonNode name = jsonNode.get("name");
String s = name.asText();
System.out.println(s);
//获取elements字段下数组第二个对象的age
JsonNode elements = jsonNode.get("elements");
JsonNode object2 = elements.get(1);//从0开始哦
JsonNode age = object2.get("age");
int i = age.asInt();
System.out.println(i);
результат операции:
haha
2
Сериализация
ObjectMapper (преобразование JavaObject в JSON)
Element element = new Element();
element.setAge(1);
element.setElName("zll");
ObjectMapper objectMapper = new ObjectMapper();
String elementStr = objectMapper.writeValueAsString(element);
System.out.println(elementStr);
Результат выглядит следующим образом:
{"age":1,"elName":"zll"}
Другие распространенные методы сериализации:
writeValue(File arg0, Object arg1) преобразует arg1 в последовательность json и сохраняет ее в файл arg0
writeValue(OutputStream arg0, Object arg1) преобразует arg1 в последовательность json и сохраняет ее в выходной поток arg0.
teValueAsBytes(Object arg0) преобразует arg0 в последовательность json и выводит результат в виде массива байтов
writeValueAsString(Object arg0) преобразует arg0 в последовательность json и выводит результат в виде строки.
JsonGenerator (генератор json):
Вы можете создать json с соответствующей структурой в соответствии с вашими потребностями.
Сериализация метки на самоконце времени форматируется по установленным правилам (по умолчанию преобразуется в метку времени)
@JsonInclude (параметр)
JsonInclude.Include.NON_EMPTY: атрибут пуст или null не участвует в сериализации
JsonInclude.Include.NON_NULL: свойство имеет значение null и не участвует в сериализации.
@JsonProperty("firstName")
Отметьте поле, укажите сериализованное имя поля
@JsonDeserialize (используя = T расширяет JsonDeserializer.class) и @JsonSerialize (использует = T расширяет JsonSerializer.class)
Настройка правил сериализации и десериализации для определенных типов полей
Если вы считаете, что эта статья полезна для вас, пожалуйста, "прочитать/переслать/лайкнуть/пометить", спасибо
Если вы все еще найдете лучшие или другие идеи, пожалуйста, не стесняйтесь, дайте мне знать в области сообщений, а также обсудите и обменяйтесь исправлениями вместе, большое спасибо
Добро пожаловать на официальный аккаунт: галантерейные товары "На самом деле Овен" постоянно обновляются...