Как конвертировать jsonString в JSONObject в Java - PullRequest
362 голосов
/ 09 марта 2011

У меня есть строковая переменная с именем jsonString:

{"phonetype":"N95","cat":"WP"}

Теперь я хочу преобразовать ее в объект JSON.Я искал больше в Google, но не получил ожидаемых ответов ...

Ответы [ 17 ]

597 голосов
/ 09 марта 2011

Использование org.json библиотеки:

try {
     JSONObject jsonObject = new JSONObject("{\"phonetype\":\"N95\",\"cat\":\"WP\"}");
}catch (JSONException err){
     Log.d("Error", err.toString());
}
142 голосов
/ 30 сентября 2014

Для всех, кто еще ищет ответ:

JSONParser parser = new JSONParser();
JSONObject json = (JSONObject) parser.parse(stringToParse);
42 голосов
/ 09 марта 2011

Вы можете использовать google-gson.Подробности:

Примеры объектов

class BagOfPrimitives {
  private int value1 = 1;
  private String value2 = "abc";
  private transient int value3 = 3;
  BagOfPrimitives() {
    // no-args constructor
  }
}

(Сериализация)

BagOfPrimitives obj = new BagOfPrimitives();
Gson gson = new Gson();
String json = gson.toJson(obj); 
==> json is {"value1":1,"value2":"abc"}

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

(десериализация)

BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class);  
==> obj2 is just like obj

Другой пример для Gson:

Gson прост в изучении и реализации, вам необходимо знать следующие два метода:

-> toJson () - преобразовать Java-объект в формат JSON

-> fromJson () - преобразовать JSON в объект Java

import com.google.gson.Gson;

public class TestObjectToJson {
  private int data1 = 100;
  private String data2 = "hello";

  public static void main(String[] args) {
      TestObjectToJson obj = new TestObjectToJson();
      Gson gson = new Gson();

      //convert java object to JSON format
      String json = gson.toJson(obj);

      System.out.println(json);
  }

}

Вывод

{"data1":100,"data2":"hello"}

Ресурсы:

Домашняя страница проекта Google Gson

Руководство пользователя Gson

Пример

33 голосов
/ 09 марта 2011

Существуют различные сериализаторы и десериализаторы Java JSON, связанные с домашней страницей JSON .

На момент написания этой статьи существует 22:

... но, конечно, список может измениться.

24 голосов
/ 23 марта 2015

Java 7 решение

import javax.json.*;

...

String TEXT;
JsonObject body = Json.createReader(new StringReader(TEXT)).readObject()

;

10 голосов
/ 06 ноября 2015

Чтобы преобразовать String в JSONObject, вам просто нужно передать экземпляр String в конструктор JSONObject.

Например:

JSONObject jsonObj = new JSONObject("your string");
10 голосов
/ 09 марта 2011

Мне нравится использовать google-gson для этого, и это именно потому, что мне не нужно работать с JSONObject напрямую.

В этом случае у меня будет класс, который будет соответствовать свойствамВаш объект JSON

class Phone {
 public String phonetype;
 public String cat;
}


...
String jsonString = "{\"phonetype\":\"N95\",\"cat\":\"WP\"}";
Gson gson = new Gson();
Phone fooFromJson = gson.fromJson(jsonString, Phone.class);
...

Однако, я думаю, что ваш вопрос больше похож на: Как я могу получить реальный объект JSONObject из строки JSON.

Я смотрел на google-jsonapi и не смог найти ничего более простого, чем api org.json, который, вероятно, вы и хотите использовать, если вам так сильно нужно использовать barebones JSONObject.

http://www.json.org/javadoc/org/json/JSONObject.html

С org.json.JSONObject (еще один совершенно другой API) Если вы хотите сделать что-то вроде ...

JSONObject jsonObject = new JSONObject("{\"phonetype\":\"N95\",\"cat\":\"WP\"}");
System.out.println(jsonObject.getString("phonetype"));

Я думаю, что прелесть google-gson в том, что вам не нужноиметь дело с JSONObject.Вы просто берете json, передаете класс, в который хотите десериализоваться, и ваши атрибуты класса будут соответствовать JSON, но опять же, у каждого свои требования, может быть, вы не можете позволить себе роскошь иметь предварительно сопоставленные классы насторона десериализации, потому что на стороне JSON Generation все может быть слишком динамично.В этом случае просто используйте json.org.

8 голосов
/ 11 сентября 2014

Вы должны импортировать org.json

JSONObject jsonObj = null;
        try {
            jsonObj = new JSONObject("{\"phonetype\":\"N95\",\"cat\":\"WP\"}");
        } catch (JSONException e) {
            e.printStackTrace();
        }
6 голосов
/ 08 декабря 2018

Строка в JSON с использованием Jackson с com.fasterxml.jackson.databind:

Предполагается, что ваша строка json выглядит следующим образом: jsonString = {"phonetype": "N95", "cat": "WP"}

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
 * Simple code exmpl
 */
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(jsonString);
String phoneType = node.get("phonetype").asText();
String cat = node.get("cat").asText();
3 голосов
/ 08 сентября 2016

Использовать JsonNode of rapidxml для общего анализа Json.Он внутренне создает карту значений ключа для всех входных данных.

Пример:

private void test(@RequestBody JsonNode node)

input String:

{"a":"b","c":"d"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...