Есть ли способ в 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?
Я использовал несколько из них, и мой любимый,
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 уже упоминался); но некоторые варианты более трудоемки, такие как оригинальная библиотека org.json, которая требует от вас создания промежуточного «JSONObject», даже если в этом нет необходимости.
GSON - хороший вариант для преобразования объекта Java в объект Json и наоборот.& Лт; br > Это инструмент, предоставленный Google.
для преобразования json в java-объект используйте: fromJson (jsonObject, javaclassname.class)
для преобразования объекта Java в объект json использование: toJson (javaObject)
и отдых будет сделан автоматически
Для получения дополнительной информации и для скачивания]1
Вы можете сделать это легко с Google GSON .
Допустим, у вас есть класс под названием User с полями user, width и height, и вы хотите преобразовать следующую строку json в объект User.
{"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 parsers для 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, могут быть примитивными типами (длинные, int, логические), струны или массивы.
Обратный процесс довольно прост, я имею в виду преобразование строки в json object / array.
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.simple, как показано ниже
import org.json.JSONObject;
String someJsonString = "{name:"MyNode", width:200, height:100}";
JSONObject jsonObj = new JSONObject(someJsonString);
А затем используйте jsonObj для работы с JSON Object. например jsonObj.get ("имя") ;
Согласно приведенной ниже ссылке, JSON.simple демонстрирует постоянную эффективность как для небольших, так и для больших файлов 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 ("[\" Здравствуйте, Мир \ "]");
Это старый вопрос, и json-simple (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/, которые сравниваются.
Я написал библиотеку, которая использует json.org для анализа JSON, но на самом деле она создаст для вас прокси-сервер интерфейса. Код / JAR находится на code.google.com.
http://fixjures.googlecode.com/
Я не знаю, работает ли это на J2ME. Поскольку он использует Java Reflection для создания прокси, я думаю, что это не сработает. Кроме того, в настоящее время он сильно зависит от коллекций 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");
Помимо www.json.org вы также можете реализовать свой собственный анализатор, используя javacc и сопоставляя вашу личную грамматику / схему. См. Эту заметку в моем блоге: http://plindenbaum.blogspot.com/2008/07/parsing-json-with-javacc-my-notebook.html
Просто сделайте объект Json в Java со следующей строкой Json. В вашем случае
{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"));