2012-01-22 67 views
0

可以說我有這樣的如何切割這個字符串並放入數組?

[{ "name" : "Ronald" , "firstname" : "Ruck"} , { "name" : "Yunchin" , "firstname" : "Cha"} , { "name" : "Klaus" , "firstname" : "Mixer"}] 

一個String有時候串較短/更長的時間,重要的是,在開始有[{並在年底}]。我想只讀取名字和名字,把一個名字+名字放到一個字符串中,然後把每個名字+名字字符串放在一個數組中。好聽起來很奇怪?如果我用這些名字迭代我的新數組,應該有一個輸出:Ronald Ruck,Yunchin Cha,Klaus Mixer ...有什麼想法?我知道正則表達式,但我不擅長。謝謝!

編輯: 是的,它看起來像一個JSON。但是,如果我使用像http://code.google.com/p/json-simple/這樣的json閱讀器,我會收到一個錯誤:Exception in thread "main" java.lang.ClassCastException: org.json.simple.JSONArray cannot be cast to org.json.simple.JSONObject起初我已經考慮過了,因爲開始時有一個「[」,最後是「]」。沒有我得到:Unexpected token COMMA(,) at position 44.所以它可能不是一個真正的JSON?我也可以嘗試http://jackson.codehaus.org/,但我不知道這會工作。

編輯2: 好的一切都很好:)用json-simple工作,只需要正確使用JSONArray。 Gson Lib的解決方案也可以,謝謝大家。

+10

看起來JSON。獲取JSON解析器爲您完成! http://json.org/java/ –

+0

是的,像傑克遜http://jackson.codehaus.org/ –

+0

@OverStack我幾乎可以保證它會比試圖用正則表達式做起來容易。 –

回答

3

您提供的字符串是有效的json字符串。您可以檢查有效性here。您可以使用Gson library解析java中的json字符串。

先閱讀此Tutorial首先比我的代碼更有意義。

import com.google.gson.Gson; 
import com.google.gson.JsonArray; 
import com.google.gson.JsonElement; 
import com.google.gson.JsonParser; 

String json1 = "[{\"Name\":\"Ronald\",\"Firstname\":\"Reagan\"},{\"Name\":\"Chris\",\"Firstname\":\"Jeoff\"}]"; 
JsonElement json = new JsonParser().parse(json1); 
JsonArray array= json.getAsJsonArray();  
Iterator iterator = array.iterator();  
while(iterator.hasNext()){ 

JsonElement json2 = (JsonElement)iterator.next(); 

Gson gson = new Gson(); 
GetResult gresult = gson.fromJson(json2, GetResult.class); 
System.out.println("Name:" + gresult.getName()); 
System.out.println("FirstName:" + gresult.getFirstname()); 

現在,對於上述代碼的對應Getter and Setter class

public String Name; 
public String Firstname; //Note the variable names are same as the name in Json String. 

public String getFirstname() { 
return Firstname; 
} 
public String getName() { 
return Name; 
} 

輸出=

Name:Ronald

FirstName:Reagan

Name:Chris

FirstName:Jeoff

+1

Hej多數民衆贊成在一個很好的。我想出了json-simple的工作方式(好吧,你必須改變這裏和那裏的一些東西在代碼^^但它是一樣的)。謝謝。 – OverStack

+0

@OverStack它聽起來像你沒有自己使用這個答案。如果您找到了替代解決方案,請自行發佈並接受該答案。 – Pureferret