2014-12-23 2 views
7

은 내가 JSON 파일 느릅 나무는 다음과 같습니다 구문 분석 할 필요가 객체 :JSON 배열은

[ 
    { 
    "y": 148, 
    "x": 155 
    }, 
    { 
    "y": 135, 
    "x": 148 
    }, 
    { 
    "y": 148, 
    "x": 154 
    } 
] 

그리고 난에이 X 좌표와 Y 좌표를 넣을 JAVAOBJECT은 클릭, 그 클래스는 다음과 같이 보이는 :

public class Click { 
    int x; 
    int y; 


    public Click(int x, int y) { 
     this.x = x; 
     this.y = y; 
    } 

    public int getX() { 
     return x; 
    } 

    public void setX(int x) { 
     this.x = x; 
    } 

    public int getY() { 
     return y; 
    } 

    public void setY(int y) { 
     this.y = y; 
    } 
} 

가 쉽게 종료되고 말 때문에 나는 GSON 살펴 보았다하지만 난 내 파일에서 그것을 할 수있는 방법을 얻을니까.

+0

이 '[]'배열이다'{}'은 목적. –

답변

13

jsonStr을 변수에 저장된 호출 :

String jsonStr = getJsonFromSomewhere(); 
Gson gson = new Gson(); 
Click clicks[] = gson.fromJson(jsonStr, Click[].class); 
0

다른 솔리드 옵션은 Jackson입니다.이 튜토리얼은 매우 견고합니다. 나는 그것에 익숙하지 않기 때문에 이것이 도움이되기를 바랍니다.

:

주요 아이디어는 당신이 아마

편집 User.class가 아닌 다른 무언가를 원하는 실현, 가장 좋은이어야 객체 매퍼

ObjectMapper mapper = new ObjectMapper(); 
User user = mapper.readValue(new File("c:\\user.json"), User.class); 

4 단계를 사용한다는 것입니다 Gson을 사용하기로 마음 먹으면 다른 비슷한 대답을 보는 것이 도움이 될 것입니다. This question은 JSON을 POJO (Plain Old Java Objects)로 변환하는 것에 관한 것으로, 그 주위에 떠 다니는 것보다 좀 더 자세합니다. 다시 말하지만, 나는 이것들에 익숙하지 않고 몇 가지 질문에 대답하려고 노력할 수 있습니다. 그러나 이것이 당신이 가야 할 곳으로 당신을 데려 오기를 희망합니다.

해피 코딩! 궁금한 점이 있으면 의견을 남기십시오.

+0

예 잭슨은 존재하지만 gson은 더 사용하기 쉽고 더 빨라 보인다.하지만 나는 그것을 얻지 못한다. User.class는 Click.class가 될 것이다. 내가 gson에서 이미 알고있는 한, 내가 알아 낸 한도는 – ProblemAnswerQue

+0

이다. Jackson이 작동하도록 gson 예제에서 다음과 같이 클래스 –

+0

의 빈 생성자가 필요합니다. Gson gson = new Gson(); System.out.println ( gson.fromJson ("{ 'id': 1, 'firstName': 'Lokesh', 'lastName': '굽타', '역할': [ 'ADMIN', '관리자'] } ", Employee.class)); 출력 : 직원 [ID = 1, 이름 = 록쉬,이 lastName = 굽타, 역할 = [ADMIN, MANAGER] – ProblemAnswerQue

1

Gson API 및 몇 가지 예를 확인하십시오. 나는 아래의 링크를 넣어 놨어! 하여 JSON 문자열 데이터 가정

String jsonString = //your json String 
Gson gson = new Gson(); 
Type typeOfList = new TypeToken<List<Map<String, Integer>>>() {}.getType(); 
List<Map<String, Integer>> list = gson.fromJson(jsonString, typeOfMap); 

List<Click> clicks = new ArrayList<Click>(); 
for(int i = 0; i < list.size(); i++) { 
    int x = list.get(i).get("x"); 
    int y = list.get(i).get("y"); 
    clicks.add(new Click(x, y)); 
} 

(http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/Gson.html) (http://google-gson.googlecode.com/svn/tags/1.5/src/test/java/com/google/gson/functional/MapTest.java)

+0

지금 내가 가진이 ". \\ data.json" 개인 정적 최종 문자열적인 filePath = ; BufferedReader br; Gson gson = new Gson(); click = gson.fromJson (br, Click.class)을 클릭하십시오. System.out.println (클릭); 하지만 여전히 내 json 파일에 잘못된 시작 객체와 종료 객체가 있다고합니다. – ProblemAnswerQue

+0

BufferedReader가 어떻게 작동하는지 잘 모르겠습니다. 네가 할 수 있다는 것을 나는 몰랐다. 그것이 오류를 얻는 이유 일 수 있습니다. – haley

+0

json을 문자열로 가져 오는 데 방해가 되셨습니까? – haley