[英]JSON Array on Objects to List of String
我有以下JSON
[{
"rowId": "03 EUR10580000"
}, {
"rowId": "03 EUR10900001"
}, {
"rowId": "03 EUR1053RUD*"
}, {
"rowId": "033331"
}]
并且我想将其转换为仅包含rowId值的字符串列表,因此在这种情况下
"03 EUR10580000"
"03 EUR10900001"
"03 EUR1053RUD*"
"033331"
我是用Gson fromJson做到的,但作为回报,我得到了LinkedTreeMap的列表,当我执行循环失败时。 我想要一个简单的字符串列表。
好吧,您的字符串不是“字符串列表”的json。 它包含对象列表。 因此,您可以做的是创建一个以rowID作为字符串属性的类。
类数据
然后你可以使用GSON解析此JSON字符串为List <数据>的使用这里
或者您必须手动准备一个新的json解析器。
如果只想使用Gson
快速解析字符串,则可以简单地创建构建器,并使用“默认” List
和Map
实例来表示Java中的JSON
。 如果要更安全地使用类型,或者要在“较大”的项目中使用已解析的实例,则建议按照其他答案中的说明创建一个POJO。
final GsonBuilder gsonBuilder = new GsonBuilder();
// you may want to configure the builder
final Gson gson = gsonBuilder.create();
/*
* The following only works if you are sure that your JSON looks
* as described, otherwise List<Object> may be better and a validation,
* within the iteration.
*/
@SuppressWarnings("unchecked")
final List<Map<String, String>> list = gson.fromJson("[{ ... }]", List.class);
final List<String> stringList = list.stream()
.map(m -> m.get("rowId"))
.collect(Collectors.toList());
System.out.println(stringList);
写一个POJO类为
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class RootObject {
@SerializedName("rowId")
@Expose
private String rowId;
public String getRowId() {
return rowId;
}
public void setRowId(String rowId) {
this.rowId = rowId;
}
}
然后只需创建List<RootObject>
并从POJO中获取值。
你有:
String str = "[{\"rowId\":\"03 EUR10580000\"},{\"rowId\":\"03 EUR10900001\"},{\"rowId\":\"03 EUR1053RUD*\"},{\"rowId\":\"033331\"}]"
您可以执行以下操作(不需要任何外部库,例如gson):
str = str.replace("{\"rowId\":\"","").replace("\"}","").replace("[","").replace("]","");
List<String> rowIDs = str.split(",");
如果字符串格式为JSON,则还可以trim()
rowIDs
每个字符串
您需要将json字符串解析为JsonArray
。 然后遍历JsonArray
实例,并将每个json元素添加到列表ls
。 解决方案以下代码为sinppet:
List<String> ls = new ArrayList<String>();
String json = "[{\"rowId\":\"03 EUR10580000\"},{\"rowId\":\"03 EUR10900001\"},{\"rowId\":\"03 EUR1053RUD*\"},{\"rowId\":\"033331\"}]";
JsonArray ja = new JsonParser().parse(json).getAsJsonArray();
for(int i = 0; i < ja.size(); i++) {
ls.add(ja.get(i).getAsJsonObject().get("rowId").toString());
}
for(String rowId : ls) {
System.out.println(rowId);
}
/* output :
"03 EUR10580000"
"03 EUR10900001"
"03 EUR1053RUD*"
"033331" */
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.