[java] Java에서 jsonString을 JSONObject로 변환하는 방법

String 변수가 있습니다 jsonString.

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

이제 JSON 객체로 변환하고 싶습니다. Google에서 더 많이 검색했지만 예상 답변을 얻지 못했습니다 …



답변

org.json 라이브러리 사용하기 :

try {
     JSONObject jsonObject = new JSONObject("{\"phonetype\":\"N95\",\"cat\":\"WP\"}");
}catch (JSONException err){
     Log.d("Error", err.toString());
}


답변

여전히 답을 찾는 사람에게 :

JSONParser parser = new JSONParser();
JSONObject json = (JSONObject) parser.parse(stringToParse);


답변

사용할 수 있습니다 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을 자바 객체로 변환

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 사용자 안내서


답변

JSON 홈페이지 에서 링크 된 다양한 Java JSON 시리얼 라이저 및 디시리얼라이저가 있습니다 .

이 글을 쓰는 시점에서 다음 22 가지가 있습니다.

물론 목록은 바뀔 수 있습니다.


답변

자바 7 솔루션

import javax.json.*;

...

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

;


답변

변환하다 StringJSONObject당신이 바로 전달해야 String의 생성자로 인스턴스를JSONObject .

예 :

JSONObject jsonObj = new JSONObject("your string");


답변

나는 이것을 위해 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);
...

그러나 귀하의 질문은 JSON 문자열의 실제 JSONObject 객체로 어떻게 끝나는가와 비슷하다고 생각합니다.

나는 google-json api를보고 있었고 org.json의 api와 같은 것을 찾을 수 없었습니다. 이것은 아마도 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 생성 측면에서 일이 너무 동적 일 수 있으므로 역 직렬화 측면 이 경우 json.org를 사용하십시오.