繁体   English   中英

对象的JSON数组到字符串列表

[英]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作为字符串属性的类。

类数据

  • rowID(字符串类型)

然后你可以使用GSON解析此JSON字符串为List <数据>的使用这里

或者您必须手动准备一个新的json解析器。

如果只想使用Gson快速解析字符串,则可以简单地创建构建器,并使用“默认” ListMap实例来表示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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM