2012-04-03 4 views
2

많은 페이지를 체크 아웃했지만 대부분의 자습서와 스크립트는이 유형의 JSON 출력과 함께 오류 코드를 반환합니다. 당신은 내가 잭슨을 사용하는 것이 좋습니다 것입니다 자바/역 직렬화 JSON 직렬화하려고하면 어떻게 내가?Java의 URL에서 JSON 데이터를 가져 오는 방법은 무엇입니까?

[ 
    { 
    "user":{"id":"1","username":"user1"}, 
    "item_name":"item1", 
    "custom_field":"custom1" 
    }, 
    { 
    "user":{"id":"2","username":"user2"}, 
    "item_name":"item2", 
    "custom_field":"custom2" 
    }, 
    { 
    "user":{"id":"3","username":"user3"}, 
    "item_name":"item3", 
    "custom_field":"custom3" 
    } 
] 
+0

URL에서 이미 데이터를 다운로드했으며 읽는 방법을 알고 싶습니까? 아니면 처음부터 다운로드하는 방법을 알고 싶습니까? – ArjunShankar

+1

가능한 복제본 : http://stackoverflow.com/questions/1688099/converting-json-to-java/1688182#1688182 –

+0

많은 라이브러리가 전체 JSON 콘텐츠를 {}에 래핑하여 JSON 데이터를 래핑하려고합니다. 중괄호 안에. 나는 보통 JSONObject.fromObject (yourJsonString);을 읽는 데 json-lib를 사용합니다. – luukes

답변

1

는 먼저 각 요소와 하위 요소를 보관 유지하기위한 클래스를 선언 JSON 배열), 그리고 할당 :

MyElement[] data = gson.fromJson (myJSONString, MyElement[].class); 

그런 다음 당신은 단순히 data의 요소에 액세스 할 수 있습니다.

기억해야 할 중요한 점은 선언하는 속성의 이름과 유형이 JSON 문자열의 이름과 유형과 일치해야한다는 것입니다. 예 : "ID", "ITEM_NAME '항목 등

+0

나는 이것을 사용하려고 시도했으나 여전히 오류가 발생했다. 여기에 내가 가지고있는 것에 대한 pastebin 링크가있다. http://pastebin.com/nRiGqq9r 'MyElement [] data = new Gson(). fromJson (jsonText, MyElement.class); ' MyElement []를 MyElement로 변경해야한다는 것을 알려 주므로이 방법도 작동하지 않습니다.이 스크립트를 어떻게 작동시킬 수 있습니까? – Aronnn

+0

@Aronnn - fromJson 호출에서 할당 할 유형은 MyElement가 아닌 MyElement []. class입니다.class' – ArjunShankar

+0

다음은 제가 작성한 스크립트입니다. 문제가 무엇인지 알 수 없습니다. http://pastebin.com/iR7ysMx6 – Aronnn

0

을 자바에서이 JSON에서 데이터를 추출 할 수있을 것입니다. http://jackson.codehaus.org/

일단 Jackson을 다운로드하면 json 문자열을 JSON의 객체와 일치하는 객체로 비 직렬화 할 수 있습니다.

잭슨은 클래스에 연결될 수있는 주석을 제공하여 직렬화를 매우 간단하게 만듭니다. 귀하의 경우에는 JSON 객체가이 있기 때문에 그런

public class MyUser { 
    public String id; 
    public String username; 
} 

public class MyElement { 
    public MyUser user; 
    public String item_name; 
    public String custom_field; 
} 

당신이 (가장 바깥 쪽 요소의 배열을 선언 : 당신이 GSON를 사용하려면

+0

jackson을 사용하여이 JSON에서 데이터를 가져올 수 있습니까? – Aronnn

0

당신은 JSON 간단한
http://code.google.com/p/json-simple/

예를 시도해 볼 수도 있습니다 :

JSONParser jsonParser = new JSONParser(); 
JSONArray jsonArray = (JSONArray) jsonParser.parse(jsonDataString); 

for (int i = 0; i < jsonArray.size(); i++) { 
    JSONObject obj = (JSONObject) jsonArray.get(i); 
    //Access data with obj.get("item_name") 
} 

그냥/널 (null)를 확인 캐스팅 등으로 조심 조심.

관련 문제