假设我有一个像这样的字符串
[{ "name" : "Ronald" , "firstname" : "Ruck"} , { "name" : "Yunchin" , "firstname" : "Cha"} , { "name" : "Klaus" , "firstname" : "Mixer"}]
有时字符串更短/更长,重要的是在开始时有[{和最后}]。我想只读取名称和名字,将名称+名字放在一个String中,然后将每个Name + Firstname-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/,但我不确定它是否有用。
EDIT2: 好的一切都很好:)使用json-simple工作,只需要正确使用JSONArray。使用Gson Lib的解决方案也可以,谢谢大家。
答案 0 :(得分: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;
}
输出=
名称:罗纳德
姓:里根
姓名:Chris
姓:Jeoff