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 문자열입니다.
답변
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
