Преобразовать строку JSON в объект в Java ME?



есть ли способ в Java/J2ME преобразовать строку, например:



{name:"MyNode", width:200, height:100}


к внутреннему объектному представлению того же самого, в одной строке кода?



потому что текущий метод слишком утомителен:



Object n = create("new");
setString(p, "name", "MyNode");
setInteger(p, "width", 200);
setInteger(p, "height", 100);


может быть, библиотека JSON?

882   14  

14 ответов:

я использовал несколько из них и мой любимый,

http://code.google.com/p/json-simple/

библиотека очень мала, поэтому она идеально подходит для J2ME.

вы можете разобрать JSON в объект Java в одной строке, как это,

JSONObject json = (JSONObject)new JSONParser().parse("{\"name\":\"MyNode\", \"width\":200, \"height\":100}");
System.out.println("name=" + json.get("name"));
System.out.println("width=" + json.get("width"));

самый простой вариант-это Джексон:

MyObject ob = new ObjectMapper().readValue(jsonString, MyObject.class);

есть и другие столь же простые в использовании библиотеки (Gson уже упоминался); но некоторые варианты являются более трудоемкими, как оригинальная организация.библиотека json, которая требует, чтобы вы создали промежуточный "JSONObject", даже если у вас нет необходимости в них.

GSON является хорошим вариантом для преобразования объекта java в объект json и наоборот.
Это инструмент, предоставленный google.

для преобразования json в объект java используйте:fromJson(jsonObject,javaclassname.class)
для преобразования объекта java в объект json используйте:toJson(javaObject)
а отдых будет сделан автоматически

дополнительные информация и загрузки

Вы можете сделать это легко с Google GSON.

{"name":"MyNode", "width":200, "height":100}

Вы можете легко сделать это, без необходимости бросать (сохраняя комментарий nimcap в виду ;)), со следующим кодом:

Gson gson = new Gson(); 
final User user = gson.fromJson(jsonString, User.class);

где jsonString-это приведенная выше строка JSON.

для получения дополнительной информации, пожалуйста, посмотрите в https://code.google.com/p/google-gson/

У вас есть много Парсеры JSON для Java:

  • JSONObject.java
    JSONObject-это неупорядоченная коллекция пар имя / значение. Его внешняя форма представляет собой строку, заключенную в фигурные скобки с двоеточиями между именами и значениями и запятыми между значениями и именами. Внутренняя форма-это объект, имеющий методы get() и opt() для доступа к значениям по имени и методы put () для добавления или замены значений по имени. Этот значения могут быть любого из этих типов: Boolean, JSONArray, JSONObject, Number и String или JSONObject.объект null.

  • JSONArray.java
    JSONArray-это упорядоченная последовательность значений. Его внешняя форма представляет собой строку, заключенную в квадратные скобки с запятыми между значениями. Внутренняя форма-это объект, имеющий методы get() и opt() для доступа к значениям по индексу и методы put () для добавления или замены значений. Значения могут быть любыми эти типы: Boolean, JSONArray, JSONObject, Number и String или JSONObject.объект null.

  • JSONStringer.java
    JSONStringer-это инструмент для быстрого создания текста JSON.

  • JSONWriter.java
    JSONWriter-это инструмент для быстрого написания текста JSON в потоках.

  • JSONTokener.java
    JSONTokener принимает исходную строку и извлекает символы и жетоны из него. Он используется конструкторами JSONObject и JSONArray для анализа исходных строк JSON.

  • JSONException.java
    Исключение JSONException создается при обнаружении синтаксической или процедурной ошибки.

  • JSONString.java
    JSONString-это интерфейс, который позволяет классам реализовать их сериализацию JSON.

официальный сайт JSON где вы должны смотреть. Он предоставляет различные библиотеки, которые могут быть использованы с Java, я лично использовал этот,JSON-lib который является реализацией работы на сайте, поэтому он имеет точно такой же класс-методы и т. д. В этом страница.

Если вы нажмете ссылки html там вы можете найти все, что вы хотите.

короче:

чтобы создать объект json и массив json, код это:

JSONObject obj = new JSONObject();
obj.put("variable1", o1);
obj.put("variable2", o2);
JSONArray array = new JSONArray();
array.put(obj);

o1, o2, могут быть примитивными типами (long, int, boolean), строками или массивами.

обратный процесс довольно прост, я имею в виду преобразование строки в объект/массив json.

String myString;

JSONObject obj = new JSONObject(myString);

JSONArray array = new JSONArray(myString);

для того, чтобы быть правильно проанализированы вы просто должны знать, если вы анализируете массив или объект.

использовать google GSON библиотека для этого

public static <T> T getObject(final String jsonString, final Class<T> objectClass) {  
    Gson gson = new Gson();  
    return gson.fromJson(jsonString, objectClass);  
}

http://iandjava.blogspot.in/2014/01/java-object-to-json-and-json-to-java.html

как многие уже заявили, довольно простой способ сделать это с помощью JSON.просто, как показано ниже

import org.json.JSONObject;

String someJsonString = "{name:"MyNode", width:200, height:100}";
JSONObject jsonObj = new JSONObject(someJsonString);

а затем использовать jsonObj для работы с объектом JSON. например, jsonObj.получить("наименование");

согласно приведенной ниже ссылке, JSON.простой показывает постоянную эффективность как для малых, так и для больших файлов JSON

http://blog.takipi.com/the-ultimate-json-library-json-simple-vs-gson-vs-jackson-vs-json/

JSON IO-это самый простой способ преобразовать строку JSON или входной поток JSON в объект Java

строка для объекта Java
Object obj = JsonReader.jsonToJava("[\"Hello, World\"]");

https://code.google.com/p/json-io/

Это старый вопрос и json-простой (https://code.google.com/p/json-simple/) может быть хорошим решением в то время, но, пожалуйста, учтите, что проект, похоже, не активен некоторое время !

Я предлагаю Gson, который теперь размещен по адресу:https://github.com/google/gson

Если производительность-это ваша проблема, вы можете взглянуть на некоторые тесты http://blog.takipi.com/the-ultimate-json-library-json-simple-vs-gson-vs-jackson-vs-json/ которые сравнивают.

кроме www.json.org вы также можете реализовать свой собственный парсер с помощью javacc и соответствие вашей персональной грамматики / схемы. Смотрите эту заметку в моем блоге : http://plindenbaum.blogspot.com/2008/07/parsing-json-with-javacc-my-notebook.html

Я написал библиотеку, которая использует json.org чтобы разобрать JSON, но он фактически создаст прокси-интерфейс для вас. Код / JAR включен code.google.com.

http://fixjures.googlecode.com/

Я не знаю, если он работает на J2ME. Поскольку он использует отражение Java для создания прокси, я думаю, что это не сработает. Кроме того, в настоящее время у него есть жесткая зависимость от коллекций Google, которые я хочу удалить, и это, вероятно, слишком тяжелый вес для ваших нужд, но это позволяет вам взаимодействовать с вашими данными JSON так, как вы ищете:

interface Foo {
    String getName();
    int getWidth();
    int getHeight();
}

Foo myFoo = Fixjure.of(Foo.class).from(JSONSource.newJsonString("{ name : \"foo name\" }")).create();
String name = myFoo.getName(); // name now .equals("foo name");

Джексон для больших файлов, GSON для небольших файлов, и JSON.просто для обработки обоих.

просто сделайте объект Json в java со следующим Json String.In ваше дело

{name:"MyNode", width:200, height:100}

если выше ваша строка Json, просто создайте объект Json с ним.

JsonString ="{name:"MyNode", width:200, height:100}";
JSONObject yourJsonObject = new JSONObject(JsonString);
System.out.println("name=" + yourJsonObject.getString("name"));
System.out.println("width=" + yourJsonObject.getString("width"));

Comments

    Ничего не найдено.