[java] Java ME에서 JSON 문자열을 객체로 변환 하시겠습니까?

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"));


답변

가장 간단한 옵션은 Jackson입니다 .

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

유사하게 사용하기 쉬운 다른 라이브러리가 있습니다 (Gson은 이미 언급했습니다). 그러나 일부 선택은 원래 org.json 라이브러리와 같이 더 힘들어서 중간 “JSONObject”가 필요하지 않더라도 생성해야합니다.


답변

GSON은 자바 객체를 json 객체로 또는 그 반대로 변환하는 좋은 옵션입니다.
Google에서 제공하는 도구입니다.

json을 java 객체 fromJson(jsonObject,javaclassname.class)
로 변환 하는 경우 : java 객체를 json 객체로 변환하는 경우 :toJson(javaObject)
나머지는 자동으로 수행됩니다.

자세한 정보 및 다운로드


답변

Google GSON으로 쉽게 할 수 있습니다.

user, width 및 height 필드가있는 User라는 클래스가 있고 다음 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/참조하십시오.


답변

Java 용 JSON 파서 가 많이 있습니다 .

  • 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