2014-12-23 25 views
7

Bir json dosyası wich şöyle ayrıştırmak gerekir nesneleri:JSON Dizisi

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

Ve içine bu X-koordinatları ve Y-koordinatları koymak istiyorum JavaObject tıklayın, bu sınıf şöyle bir :

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; 
    } 
} 

onlar kolay çıkmak demek çünkü GSON baktım ama benim dosyadan bunu nasıl bunu anlamıyorum.

+0

'[]' bir dizidir, '{}' bir bir nesne. –

cevap

13

jsonStr değişken depolanan adlandırılır:

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

Başka bir katı seçenek Jackson oldukça sağlam bir öğreticiye sahip gibi görünüyor. Ben buna aşina değilim, bu yüzden umarım yardımcı olur.

:

ana fikir sadece muhtemelen

DÜZENLEME User.class dışında bir şey istiyorum gerçekleştirmek, en iyi bahis olması gereken bir nesne eşleyicisi

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

Adım 4 kullanmasıdır Gson'u kullanmaya hazırsanız, belki de diğer benzer cevaplara bakmak yardımcı olacaktır. This question JSON'u POJO'ya (Düz Eski Nesne Nesneleri) dönüştürmekle ilgilidir ve bunların etrafı bir kaç tane daha etrafta dolaşıyor. Yine, bunlara aşina değilim ve bazı sorulara cevap vermeye çalışabilirim, ama umarım bu, gitmeniz gereken yere götürür.

Mutlu kodlama! Herhangi bir sorunuz varsa yorum bırakın.

+0

evet Jackson var biliyorum ama gson kullanımı daha kullanıcı dostu ve daha hızlı gibi görünüyor ama ben sadece bunu anlamıyorum, User.class Click.class olacak, ben zaten gson içinde bildiğim kadarıyla – ProblemAnswerQue

+0

için anlamaya kadar Çalışmak için Jackson da sizin için –

+0

sınıfınız için boş bir kurucunuz olması gerekir gson örnek olarak yazılır: Gson gson = new Gson(); System.out.println ( gson.fromJson ("{'id': 1, 'firstName': 'Lokesh', 'lastName': 'Gupta', 'roller': ['ADMIN', 'MANAGER'] } " Çalışanı. Sınıf)); Çıktı: Çalışan [id = 1 firstName = Lokesh, lastName = Gupta, roller = [ADMIN, YÖNETİCİSİ]] – ProblemAnswerQue

1

Gson API'sine ve bazı örneklere bakın. Aşağıdaki linkleri koydum! JSON dize veri varsayılarak

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

şimdi ben bu: "\\ Data.JSON" özel statik nihai Dize filePath = ; BufferedReader br; Gson gson = new Gson(); Tıklayın tıklayın = gson.fromJson (br, Click.class); System.out.println (tıklayın); ancak yine de json dosyamın yanlış bir başlangıç ​​nesnesinin ve bitiş nesnesinin – ProblemAnswerQue

+0

olduğunu söylüyor. BufferedReader'ın bu yöntemde nasıl çalıştığından emin değilim. Bunu yapabileceğini bilmiyordum. Bu yüzden hatayı alıyorsun. – haley

+0

Json'u bir ipin içine soktun mu? – haley