Java 如何剪切此字符串并放入数组?
假设我有一根这样的线Java 如何剪切此字符串并放入数组?,java,regex,json,Java,Regex,Json,假设我有一根这样的线 [{ "name" : "Ronald" , "firstname" : "Ruck"} , { "name" : "Yunchin" , "firstname" : "Cha"} , { "name" : "Klaus" , "firstname" : "Mixer"}] 有时字符串较短/较长,重要的是开头有[{和结尾有}]。我只想读取name和firstname,将name+firstname放在一个字符串中,然后将每个name+firstname字符串放在一个数组中
[{ "name" : "Ronald" , "firstname" : "Ruck"} , { "name" : "Yunchin" , "firstname" : "Cha"} , { "name" : "Klaus" , "firstname" : "Mixer"}]
有时字符串较短/较长,重要的是开头有[{和结尾有}]。我只想读取name和firstname,将name+firstname放在一个字符串中,然后将每个name+firstname字符串放在一个数组中。听起来怪怪的?如果我用这些名称迭代我的新数组,应该有一个输出:Ronald Ruck、Yunchin Cha、Klaus Mixer。。。有什么想法吗?我知道一些正则表达式,但我不擅长。谢谢大家!
编辑:
是的,它看起来像一个Json。但是,如果我使用像我这样的json阅读器,我会得到一个错误:线程“main”java.lang.ClassCastException中的异常:org.json.simple.JSONArray不能强制转换为org.json.simple.JSONObject
,因为在开始时有一个“[”,在结束时有一个“]”。如果没有它,我会得到:位置44处意外的标记逗号(,)。
那么它可能不是真正的json?我也可以试试,但我不确定那是否行得通
Edit2:
好的,一切都很好:)有了json简单的工作原理,只需正确使用JSONArray即可。Gson库的解决方案也可以,谢谢大家。您提供的字符串是有效的json字符串。你可以检查一下有效期。您可以使用解析java中的json字符串 先读这篇文章,我的代码会对你更有意义
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和Setter类
:
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;
}
输出=
姓名:罗纳德
名字:里根
姓名:克里斯
名字:杰夫
您提供的字符串是有效的json字符串。你可以检查一下有效期。您可以使用解析java中的json字符串 先读这篇文章,我的代码会对你更有意义
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和Setter类
:
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;
}
输出=
姓名:罗纳德
名字:里根
姓名:克里斯
名字:杰夫
看起来像JSON。找一个JSON解析器来帮你做!是的,就像Jackson@OverStack一样,我几乎可以保证这比使用正则表达式更容易。我假设您在尝试使用JSON simple解析字符串时出错了。你能把相关的代码部分贴出来吗?请注意,
JSONArray
不扩展JSONObject
,因此您必须决定使用哪一个。解析器返回一个JSONArray
,因为顶级元素是数组。我假设您试图将其分配给类型为JSONObject
的变量,但该变量不起作用。找一个JSON解析器来帮你做!是的,就像Jackson@OverStack一样,我几乎可以保证这比使用正则表达式更容易。我假设您在尝试使用JSON simple解析字符串时出错了。你能把相关的代码部分贴出来吗?请注意,JSONArray
不扩展JSONObject
,因此您必须决定使用哪一个。解析器返回一个JSONArray
,因为顶级元素是数组。我假设您试图将其分配给类型为JSONObject
的变量,但该变量不起作用。可能与Hej重复这是一个好的变量。我发现使用json simple也可以工作(好的,你必须在代码中改变一些东西^^^^,但都是一样的)。谢谢。@OverStack听起来你自己没有用这个答案。如果你找到了另一个解决方案,请自己发布这个,并接受这个答案。嘿,这是一个很好的解决方案。我发现使用json simple也可以工作(好的,你必须在代码中改变一些东西^^^^,但都是一样的)。谢谢。@OverStack听起来你自己没有用这个答案。如果你找到了另一个解决方案,请自己发布并接受这个答案。