如何剪切此字符串并放入数组?

时间:2012-01-22 20:58:13

标签: java regex json

假设我有一个像这样的字符串

[{ "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的解决方案也可以,谢谢大家。

1 个答案:

答案 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