2014-02-25 84 views
1

我想使用GSON解析一些JSON數據到Java,但由於格式化的方式,我無法這樣做。我查了很多,但沒有找到任何信息幫助我解決這個問題。我沒有太多的JSON經驗,特別是在解析Java時。我將不勝感激任何幫助。解析Java中的JSON url

JSON網址: http://xpaw.ru/mcstatus/status.json

編輯:

我把您的意見如何使用傑克遜,並通過一些導遊去,並試圖使吧,我的繼承人代碼:

主類:http://pastebin.com/XRcpkAuP

UptimeCheck Class:pastebin/f2UanvhY(Sorry,I could not post more than 2 links:/)

由於某種原因,它似乎無法解析鏈接。有人可以幫我嗎? 謝謝

+2

你是什麼意思「因爲它的方式格式化」是什麼意思?最終,它爲什麼失敗? –

+1

可以分享coed和確切的問題 –

+0

http://jsonlint.com/表明這是有效的json。 – Nicole

回答

1

我個人推薦使用傑克遜JSON從Java轉換成/。 Jackson是一款高性能JSON處理器Java庫。

下面的片段將給這個圖書館一個基本的想法。

//1. Convert JSON to Java object 
ObjectMapper mapper = new ObjectMapper(); 
User user = mapper.readValue(new File("c:\\report_data.json"), ReportData.class); 

//2. Convert Java object to JSON format 
ObjectMapper mapper = new ObjectMapper(); 
mapper.writeValue(new File("c:\\report_data.json"), reportData); 

兩個writeValue()readValue()有許多重載方法來支持不同類型的InputStreamOutputStream

供大家參考

例子:http://www.mkyong.com/java/how-to-convert-java-object-to-from-json-jackson/

Shishir

0

我不知道gson,但你的JSON字符串是有效的。你可以使用下面的代碼:

這是簡單的代碼來做到這一點,我避免了所有的檢查,但這是主要想法。

public String parse(String jsonLine) { 
    JsonElement jelement = new JsonParser().parse(jsonLine); 
    JsonObject jobject = jelement.getAsJsonObject(); 
    jobject = jobject.getAsJsonObject("data"); 
    JsonArray jarray = jobject.getAsJsonArray("translations"); 
    jobject = jarray.get(0).getAsJsonObject(); 
    String result = jobject.get("translatedText").toString(); 
    return result; 
} 

爲了讓使用更通用的 - 你會發現[javadoc中] [1]這是很清楚的和有益的。

0

我在另一篇文章讀它..使用GSON似乎也不錯....

最簡單的辦法通常是創建匹配的對象的層次結構,就像這樣:

這是一個例子

public class Wrapper { 
    public Data data; 
} 
static class Data { 
    public Translation[] translations; 
} 
static class Translation { 
    public String translatedText; 
} 

然後使用GSON進行綁定,通過字段遍歷對象層次結構。添加getter和setter對於基本數據容器是沒有意義的。

因此,像:

Wrapper value = GSON.fromJSON(jsonString, Wrapper.class); 
String text = value.data.translations[0].translatedText; 
+2

你確實意識到Stackoverflow不是具有對話線程的論壇;幾乎沒有理由發佈一個全新的答案(幾乎沒有一分鐘後,你可以簡單地編輯你的原始答案與更新的信息。 –

+0

@PaulRichter問題不一定只有一個答案。如果我的兩個答案都是類似的,我可以編輯,但這裏是1個GSON,另一個沒有GSON。所以我不認爲我應該編輯,更重要的是爲什麼堆棧溢出會讓用戶發佈超過1個問題的答案? –

+0

現在它是一個有爭議的問題,因爲我看到你刪除了另一個答案。主要問題是這兩個答案都很一般。雖然他們沒有「錯誤」(你試圖提供幫助),但他們在OP問題上也沒有「正確」,因爲我們根本沒有足夠的信息來給出具體和簡明的答案。最終,雙重答案本身是可以避免的,除非這兩個職位顯然是不同的,即使如此,也不會鼓勵,因爲通常情況下這些情況很好地表明問題本身可能過於籠統(可能需要關閉)。 –