【问题标题】:Howto cut this string and put into an array?如何剪切这个字符串并放入一个数组中?
【发布时间】:2026-01-12 08:40:01
【问题描述】:

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

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

有时字符串更短/更长,重要的是开头有 [{ 和结尾 }]。我想只读取名字和名字,将名字+名字放入一个字符串,然后将每个名字+名字字符串放入一个数组中。好吧听起来很奇怪?如果我用这些名称迭代我的新数组,应该有一个输出: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的解决方案也可以,谢谢大家。

【问题讨论】:

  • 看起来像 JSON。获取一个 JSON 解析器来为你做这件事! json.org/java
  • 是的,就像杰克逊jackson.codehaus.org
  • @OverStack 我几乎可以保证它比尝试使用正则表达式更容易。
  • 我假设您在尝试使用简单的 JSON 解析字符串时做错了。你能发布相关的代码部分吗?请注意,JSONArray 不会扩展 JSONObject,因此您必须决定使用哪一个。解析器返回JSONArray,因为您有一个数组作为*元素。我假设您正在尝试将其分配给 JSONObject 类型的变量,这将不起作用。

标签: java regex json


【解决方案1】:

您提供的字符串是有效的 json 字符串。您可以检查有效性here。在java中可以使用Gson library解析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;
 }

输出 =

姓名:罗纳德

名字:里根

姓名:克里斯

名字:杰夫

【讨论】:

  • 嘿,这很好。我也用 json-simple 弄清楚了它的工作原理(好吧,你必须在这里和那里更改代码中的一些东西 ^^ 但它是一样的)。谢谢。
  • @OverStack 听起来您自己并没有使用此答案。如果您找到了替代解决方案,请自行发布并接受它作为答案。
最近更新 更多