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听起来你自己没有用这个答案。如果你找到了另一个解决方案,请自己发布并接受这个答案。