Предисловие
JSON - это аббревиатура записей объекта JavaScript, легкая форма обмена данными, альтернатива XML, и она меньше, быстрее и проще для анализа, чем XML. Поскольку JSON использует синтаксис JavaScript при описании объектов, он зависит от языка и платформы, а многие анализаторы JSON и классовые библиотеки были разработаны на протяжении многих лет.
У JSON есть следующие формы:
Объект - это неупорядоченная коллекция «имени/значение» пар ». Объект начинается с «{» (открытый кронштейн) и заканчивается «}» (закрытый кронштейн). Каждое «имя» сопровождается ":" (Colon); «Название/значение» пара »разделена« »,« (запятая).
Упорядоченный список значений. На большинстве языков он реализован как массив, вектор, список, последовательность.
Это общие структуры данных. В настоящее время большинство языков программирования поддерживают их в той или иной форме. Это позволяет обмениваться данными в том же формате между различными языками программирования.
Для получения данных из URL -адресов других серверов мы обычно передаваем данные JSON. Например, серверу B должен получить информацию о пейджинге с URL -адресов сервера A. После получения символов JSON, если он удобен и быстро для работы, он должен быть преобразован в ваш собственный объект Java.
Здесь я попробовал три сторонних JSON для конвертации, Google Gson. Это, кажется, не может успешно преобразовать. Он продолжает сообщать о ошибке формата JSON, но проверка была правильной, и попытка не удалась. Второй тип - net.sf.json, что означает, что ошибки не сообщаются, но значение объекта всегда пусто. Только JSON-Simple может успешно преобразовать объекты
Parse Json
Прежде всего, нам нужно проанализировать JSON, чтобы увидеть, является ли JSON стандартным форматом JSON. Мы можем просмотреть JSON во многих онлайн -форматах в Интернете. Как правило, мы меняем суп, а не лекарство при анализе JSON в качестве объекта.
Первый: мне нужно знать структуру JSON. Здесь я запустим сервер A и получу серию данных JSON с его URL.
Бросание данных json в инструмент форматирования может четко увидеть структуру:
{ "eventList": [ { "id": 1030, "eventId": "1508779115818499700", "createTime": 1508779115000, "endTime": 1508865480000, "eventContent": "123", "openid": "o4eWZ06xzHW6mc2gMZMYVDEtx1zk" }, {"id": 1029, "EventId": "150838290725160498", "CreateTime": 1508382906000, "End Time": 1508383020000, "EventContent": "ahhhhhhh", "opend": "o4ewz06xshsletent". }, {"id": 1028, "EventId": "1508308708414580378", "createTime": 1508308721000, "EndTime": 1508309040000, "EventContent": "30", "OpenID": "o4ewz06xzhw6mc2gzmzmzmzmz11 "Id": 1027, "EventId": "1508308463330664814", "createTime": 1508308480000, "EndTime": 1508308560000, "EventContent": "28", "OpenID": "O4EWZ06XZHW6MC2GMZMZMVDESTX1ZK", "o4ewz06xzhw6mc2gmzmvdex1zk1z 1026, "eventId": "1508308463017144213", "createTime": 1508308479000, "endTime": 1508308560000, "eventContent": "27", "openid": "o4eWZ06xzHW6mc2gMZMYVDEtx1zk" } ], "page": "1", "size": "5", "ishaspage": "1"}Второе: создать соответствующие классы объектов на основе структуры
Импорт com.yhn.consumer.entity.event; import lombok.data; import org.json.simple.jsonobject; import java.io.serializable; импортировать java.util.list; @datapublic class eventvo реализует сериализируемый {private list <cest> eventlist; Private String Page; частный размер строки; частная строка ishaspage; public EventVo (jsonObject object) {// Метод конструктора назначает значение объекту EventList = (list <Event>) object.get ("eventlist"); page = (string) object.get ("page"); size = (string) object.get ("size"); ishaspage = (string) object.get ("ishaspage"); }} Поскольку это встроенная структура, ниже приведен класс событий в private List<Event> eventList ;
Импорт lombok.data; import org.hibernate.annotations.dynamicupdate; импорт javax.persistence.entity; import javax.persistence.generatedValue; импорт javax.persistence.id; импорт java.io.serialize; Serializable {// Это событие в списке в eventvo @id @generatedvalue private integer id; // Сортировка функции частной строки EventId; // ID события частная дата Create -Time; // время творения частная дата окончания времени; // Обновление времени частной строки EventContent; // напоминать контент событий Private String OpenID; //ID пользователя} Тестовый класс
Далее структура также написана. Вы напишете модульный тест на сервере B, чтобы увидеть, можно ли успешно назначить значение.
@Test public void clientDemo () throws exception {stringBuilder json = new StringBuilder (); Url urlobject = new URL ("http://127.0.0.1/meetingsign/test/server?openid=o4ewz06xzhw6mc2gmzmyvdetx1zk&page=2&size=5"); // Указание URL httpurlConnection uc = (httpurlconnection) urlobject .openconconection (); // включить подключение BufferedReader в = new BufferedReader (новый inputStreamReader (ucleinputStream (), "UTF-8")); String inputline = null; while ((inputline = in.readline ())! = null) {json.append (inputline); // разделить json} in.close (); uc.disconnect (); System.out.println (json); // Посмотрите, получите ли вы это. // Удалить возможный UTF-8 и т. Д., Поскольку он может содержать файлы заголовков BOM. String result = formatString (json.toString ()); JsonParser parser = new jsonParser (); org.json.simple.jsonobject data = new org.json.simple.jsonobject (); data = (org.json.simple.jsonobject) parser.parse (result); EventVo EventVo = new EventVo (data); // передавать значение в log.info ("eventvo = {}", eventvo); }/*** Удалить заголовок бомбы*/public Static String FormatString (String S) {if (s! = Null) {s = s.replaceall ("/ufeff", ""); } return s; } Результаты теста
Ему присваивается значение объекту
Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенную справочную ценность для каждого обучения или работы. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения. Спасибо за поддержку Wulin.com.