Нет, это правильно, потому что я хотел создать объект json из строки json, ответ, данный dogbane, показал правильный путь к ответу.
г-н Саджид Шейх
Оба ответа Mappan и Dogbane верны, но они используют разные модули. Вы должны быть осторожны, чтобы импортировать правильный модуль для каждого, потому что есть много модулей JSONObject.
Arashsoft 14.12.15
Я попробовал с библиотекой GSON. Пожалуйста, проверьте эту ссылку .
И можете ли вы указать, какой пакет импортировать для того же?
Исчез
10
Это работает для меня с:import org.json.simple.JSONObject
Mafro34
1
Версия 1.1.1 json-simple, похоже, имеет некоторые проблемы. Вышесказанное дает «Необработанное исключение» для parser.parse(и требует try-catch или throws. Но когда вы добавляете один из них, он выдает Unhandled exception type ParseExceptionошибку или ошибку NoClassDefFound для ParseException, org.json.simple.parserдаже если у вас есть json-simple в Maven и ясно видны в библиотеке проекта.
Юха Унтинен
2
org.json - это библиотека для проверки концепции. это один из худших с точки зрения производительности и возможностей. Прежде чем выбирать, следует взглянуть на набор функций и производительность библиотеки json. Посмотрите на этот тест, который я сделал, используя JMH: github.com/fabienrenaud/java-json-benchmark. Он ясно показывает, что Джексон быстрее, чем что-либо еще, и в 5-6 раз быстрее, чем org.json.
Фабиен
5
JSONParser parser = new JSONParser (); кажется смещенным
«Если вы запрашиваете обработку на стороне клиента, это зависит от вашего языка программирования. Например, с Java вы можете использовать google-gson». Я думаю, что вы, вероятно, имели в виду «сервер», а не «клиент». И он пометил свой вопрос "Ява".
TJ Crowder
+1. Я использовал Gson в 4-5 проектах сейчас, в совершенно разных контекстах, на стороне сервера и клиента (также в приложении для Android), и это никогда не подводило меня. Очень хорошая и чистая библиотека.
Йоник
Если вы хотите использовать gson, но у вас нет предварительно определенного класса POJO (то есть у вас есть общий json без предварительно определенной структуры), этот ответ может помочь - stackoverflow.com/questions/4110664/…
Тем не менее, я думаю, что ваш вопрос больше похож на то, как я заканчиваю с реальным объектом JSONObject из строки JSON.
Я смотрел на API google-json и не мог найти ничего более простого, чем API org.json, который, вероятно, вам и стоит использовать, если вам так сильно нужно использовать базовый JSONObject.
Я думаю, что прелесть google-gson в том, что вам не нужно иметь дело с JSONObject. Вы просто берете json, передаете класс, в который хотите десериализоваться, и ваши атрибуты класса будут соответствовать JSON, но опять же, у каждого свои требования, может быть, вы не можете позволить себе роскошь иметь предварительно сопоставленные классы на сторона десериализации, потому что на стороне генерации JSON вещи могут быть слишком динамичными. В этом случае просто используйте json.org.
(2) Преобразовать строку JSON в объект JSON (JsonNode)
publicstaticJsonNode stringToJSONObject(String jsonString)throwsException{ObjectMapper jacksonObjMapper =newObjectMapper();return jacksonObjMapper.readTree(jsonString);}//Example:String jsonString ="{\"phonetype\":\"N95\",\"cat\":\"WP\"}";JsonNode jsonNode = stringToJSONObject(jsonString);Assert.assertEquals("Phonetype value not legit!","N95", jsonNode.get("phonetype").getTextValue());Assert.assertEquals("Cat value is tragic!","WP", jsonNode.get("cat").getTextValue());
Обратите внимание, что GSON с десериализацией интерфейса приведет к исключению, как показано ниже.
"java.lang.RuntimeException: Unable to invoke no-args constructor for interface XXX. Register an InstanceCreator with Gson for this type may fix this problem."
При десериализации; GSON не знает, какой объект должен быть реализован для этого интерфейса.
Буквально делая то, что вы написали: user.put("email", "someemail@mail.com")вызывает необработанное исключение.
Себастьянсо,
1
@Sebastialonso Да, вам нужно поймать исключение. Как это:try {JSONObject jObj = new JSONObject();} catch (JSONException e) {Log.e("MYAPP", "unexpected JSON exception", e);// Do something to recover.}
TheLittleNaruto
@vidya Нет, это не так. Попробуйте сравнить это снова.
Ответы:
Использование библиотеки org.json :
источник
JsonObject obj = new JsonParser().parse(jsonString).getAsJsonObject();
Для тех, кто все еще ищет ответ:
источник
import org.json.simple.JSONObject
parser.parse(
и требует try-catch или throws. Но когда вы добавляете один из них, он выдаетUnhandled exception type ParseException
ошибку или ошибку NoClassDefFound для ParseException,org.json.simple.parser
даже если у вас есть json-simple в Maven и ясно видны в библиотеке проекта.Вы можете использовать
google-gson
. Подробности:Примеры объектов
(Сериализация)
Обратите внимание, что вы не можете сериализовать объекты с циклическими ссылками, так как это приведет к бесконечной рекурсии.
(Десериализация)
Еще один пример для Gson:
Gson прост в освоении и внедрении, вам необходимо знать следующие два метода:
-> toJson () - конвертировать Java-объект в формат JSON
-> fromJson () - конвертировать JSON в объект Java
Вывод
Ресурсы:
Главная страница проекта Google Gson
Руководство пользователя Gson
пример
источник
С домашней страницей JSON связаны различные сериализаторы и десериализаторы Java JSON .
На момент написания этой статьи есть 22:
... но, конечно, список может измениться.
источник
Решение Java 7
;
источник
Чтобы преобразовать
String
вJSONObject
вас просто нужно передатьString
экземпляр в конструкторJSONObject
.Например:
источник
Мне нравится использовать google-gson для этого, и это именно потому, что мне не нужно работать с JSONObject напрямую.
В этом случае у меня будет класс, который будет соответствовать свойствам вашего объекта JSON
Тем не менее, я думаю, что ваш вопрос больше похож на то, как я заканчиваю с реальным объектом JSONObject из строки JSON.
Я смотрел на API google-json и не мог найти ничего более простого, чем API org.json, который, вероятно, вам и стоит использовать, если вам так сильно нужно использовать базовый JSONObject.
http://www.json.org/javadoc/org/json/JSONObject.html
С org.json.JSONObject (еще один совершенно другой API) Если вы хотите сделать что-то вроде ...
Я думаю, что прелесть google-gson в том, что вам не нужно иметь дело с JSONObject. Вы просто берете json, передаете класс, в который хотите десериализоваться, и ваши атрибуты класса будут соответствовать JSON, но опять же, у каждого свои требования, может быть, вы не можете позволить себе роскошь иметь предварительно сопоставленные классы на сторона десериализации, потому что на стороне генерации JSON вещи могут быть слишком динамичными. В этом случае просто используйте json.org.
источник
Вы должны импортировать org.json
источник
Строка JSON , используя
Jackson
сcom.fasterxml.jackson.databind
:Предполагая, что ваша json-строка выглядит так: jsonString = {"phonetype": "N95", "cat": "WP"}
источник
Если вы используете http://json-lib.sourceforge.net (net.sf.json.JSONObject)
это довольно просто:
или
затем получите значения с помощью json.getString (param), json.getInt (param) и так далее.
источник
Чтобы преобразовать строку в JSON и жало, как JSON. { "PHONETYPE": "N95", "кот": "РГ"}
источник
Использовать JsonNode of fastxml для общего анализа Json. Он внутренне создает карту значения ключа для всех входных данных.
Пример:
строка ввода :
источник
Нет необходимости использовать какую-либо внешнюю библиотеку.
Вместо этого вы можете использовать этот класс :) (обрабатывает даже списки, вложенные списки и json)
Чтобы преобразовать вашу строку JSON в hashmap, используйте это:
источник
Codehaus Jackson - с 2012 года я являюсь этим замечательным API для моих тестов RESTful webservice и JUnit. С их API вы можете:
(1) Преобразовать строку JSON в боб Java
(2) Преобразовать строку JSON в объект JSON (JsonNode)
(3) Преобразовать Java-бин в строку JSON.
REFS:
Codehaus Jackson
JsonNode API - Как использовать, перемещаться, анализировать и оценивать значения из объекта JsonNode
Учебник - Простой урок, как использовать Джексона для преобразования строки JSON в JsonNode
источник
Обратите внимание, что GSON с десериализацией интерфейса приведет к исключению, как показано ниже.
При десериализации; GSON не знает, какой объект должен быть реализован для этого интерфейса.
Это решено как-то здесь .
Однако FlexJSON имеет это решение по своей сути. время сериализации добавляет имя класса как часть json, как показано ниже.
Так что JSON будет немного тупее; но вам не нужно писать,
InstanceCreator
что требуется в GSON.источник
Использование org.json
Если у вас есть строка, содержащая текст в формате JSON, вы можете получить объект JSON, выполнив следующие действия:
Теперь для доступа к типу телефона
источник
Для установки одного объекта JSON в список, т.е.
в к
List<Location>
использование
jackson.mapper-ASL-1.9.7.jar
источник
источник
Лучше иди с более простым способом, используя
org.json
lib. Просто сделайте очень простой подход, как показано ниже:Теперь
obj
ваша конвертированнаяJSONObject
форма вашей соответствующей строки. Это в случае, если у вас есть пары имя-значение.Для строки вы можете напрямую перейти к конструктору
JSONObject
. Если он будет действительнымjson String
, тогда ладно, иначе он выдаст исключение.источник
user.put("email", "someemail@mail.com")
вызывает необработанное исключение.try {JSONObject jObj = new JSONObject();} catch (JSONException e) {Log.e("MYAPP", "unexpected JSON exception", e);// Do something to recover.}