Многие данные с кронштейнами [] появились в базе данных проекта. Тест сообщил об ошибке. После устранения неполадок он был вызван использованием пакета JSON-Lib JAR. JSON-LIB преобразует нулевые значения в [] в процессе преобразования строк XML в формат JSON. Теперь я кратко изложу сходства и различия между двумя пакетами XML и JSON. Возможно, потому что такие вопросы являются относительно простыми, хотя кто -то задавал такие вопросы в Интернете, ответов не было найдено. Чтобы облегчить младшие программисты, такие как я, как можно скорее познакомить и решить проблемы, я написал этот пост в блоге.
Большинство пакетов JAR для XML-JSON, которые можно найти в Интернете, являются Net.sf.json-Lib. Этот пакет используется больше в диапазоне JSON, но недостаток в том, что он требует большего количества пакетов зависимостей. Но здесь я буду говорить только о его XML для JSON.
1.net.sf.json-lib to json;
Json json = xmlserializer.read (xml);
Проблема с этим методом заключается в том, что он преобразует нулевое значение в []. Используйте json.get (value) .getClass, чтобы получить тип []. Вы можете обнаружить, что JSON-LIB распознает нулевое значение как тип JSONARRAY вместо строки, а метод ToString JsonArray переписан как [,,,,]
Если вы все еще хотите использовать этот метод, вы можете внести следующие изменения. При использовании метода getString () для получения значения объекта JSON, преобразованного из XML, сначала определите, является ли тип строки, а затем получите его.
json.get (value) exantef string? json.getString (значение): ""
2. org.json to json:
org.json.jsonobject jsonobj = org.json.xml.tojsonobject (xml);
Значение [] не будет сгенерировано, но корневая тег будет сохранена (стандартный документ XML имеет и только один root-тег, так называемый root-тег-это пара <корневых тегов> </root Tags>, содержащие все остальные теги), а общий root-тег не имеет значения для данных, поэтому, если вам нужно выполнять обработку
jsonobj.get ("root");Вот тестовый код:
пакет com.pptv.ppvision.util; Импорт org.json.xml; Импорт net.sf.json.jsonobject; Импорт net.sf.json.xml.xmlserializer; public Class xml2jsontest {private static String xml = "<root> <user> <mame> Welless </name> <ex> </sex> </user> </root>"; public static void main (string [] args) {testorgjson (); testxmlSerializer (); } public static void testorgjson () {org.json.jsonobject jsonobj = xml.tojsonobject (xml); System.out.println ("org.json xml2json:"+jsonobj); org.json.jsonobject user = jsonobj.getjsonobject ("root"). getJsonObject ("Пользователь"); // org.json необходимо удалить систему root Tag.out.println ("Имя пользователя:"+user.getString ("name")); System.out.println («Пол:»+user.getString ("sex")); } public static void testxmlSerializer () {xmlSerializer xmlSerializer = new XmlSerializer (); JsonObject jsonObject = (jsonObject) xmlSerializer.read (xml); System.out.println ("json-lib xml2json result:"+jsonobject); JsonObject user = jsonObject.getJsonObject («Пользователь»); System.out.println ("Имя пользователя:"+user.get ("name")); System.out.println ("Пол:"+(user.get ("sex") exancemon string? User.getString ("sex"): "")); }}Вот два метода для вас
Одним из них является использование метода getString (), чтобы получить значение объекта JSON, преобразованную из XML, сначала определите, является ли тип строк, а затем получить его.
Один из них org.json
Вы можете выбрать, какой метод использовать в соответствии с вашими потребностями