2017-02-16 101 views
1

我不是Java開發人員,但是現在我正在用它編寫一些測試,而且我遇到了一個簡單的問題(我想這對於「javaGuys」很簡單)。如何從Java中的某個鍵獲取值?

在我的課測試我得到的變量包含一些字符串,看起來像JavaScript中的對象(我的意思是JSON)。 這就是:

String myStringThatLooksLikeJSON = client.getStartSessionContent(); 

在調試模式下該字符串的內容...:

myStringThatLooksLikeJSON = "{"context":"blabla","count":0,"value":[{"args":"speech-model","id":"1203"}]}" 

現在我的問題。我怎樣才能得到例如「args」的價值?

在JavaScript中可以很容易地像做:

console.log(myStringThatLooksLikeJSON.value[0].args, "args"); 

而且在我的控制檯我可以看到speech-model args

但如何在Java中做到這一點?可能嗎?最純正的共同和簡單的方式!任何人都可以幫忙:)希望我很清楚。

回答

5

或者您也可以使用簡單的JSON java package

String data = "{\"context\":\"blabla\",\"count\":0,\"value\":[{\"args\":\"speech-model\",\"id\":\"1203\"}]}"; 
JSONObject d = new JSONObject(data); 
System.out.println(d.getJSONArray("value").getJSONObject(0).getString("args")); 
+1

謝謝,這種方法我想最簡單 –

5

使用GSON(或傑克遜)到您的JSON字符串解析爲一個Java對象:

YourClass object=new Gson().fromjson(myStringThatLooksLikeJSON,YourClass.class); 

的YourClass需要描述你的JSON領域。

看到JSON parsing using Gson for Java了直接訪問您所需的字段

+1

Upvoted,雖然非Java的傢伙'JSONObject'的做法是更直接的IMO – BackSlash

+0

太謝謝,但現在對我來說更加複雜(: –

0

添加傑克遜依賴於你的項目。如果使用maven構建項目,可以添加這些依賴項。

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-core</artifactId> 
    <version>2.8.6</version> 
</dependency> 

創建一個包含JSON鍵作爲字段的對象。使用以下內容,您可以將Json轉換爲Java對象並訪問您需要的字段。

ObjectMapper mapper = new ObjectMapper(); 
SampleClass obj = mapper.readValue(jsonInString, SampleClass.class); 
+0

)請注意,OP從來沒有說過他在使用Maven,我會發布「標準方式」 (將jar添加到classpath中)完整性 – BackSlash