繁体   English   中英

如何将json字符串放入java中的列表中

[英]how to put json string into list in java

我在字符串中得到一个JSON array

[ { "id":"ca.Primary_Diagnosis_Dt",
    "field":"ca.Primary_Diagnosis_Dt",
    "type":"date",
    "input":"text",
    "operator":"not_equal",
    "value":"2016/06/07"
  },
  { "id":"ca.Clinical_Stage",
    "field":"ca.Clinical_Stage",
    "type":"integer",
    "input":"select",
    "operator":"equal",
    "value":"I"
  }
]

我只想在LIST保存id,运算符和值的值,请帮忙

  1. 使用任何JSON游标,例如: GSON来创建这个特定json的arraylist
  2. 迭代arraylist
  3. 保存 :)

在线: 工作代码

首先创建一个类来存储您的值:

class Data{
  String id;
  String operator;
  String value;
}

然后遍历json:

    JSONArray jsonArr = new JSONArray("[JSON Stirng]");
    List<Data> dataList = new ArrayList<>();
    for (int i = 0; i < jsonArr.length(); i++) {

        JSONObject jsonObj = jsonArr.getJSONObject(i);
        Data data = new Data();

        data.id = jsonObj.getString("id");
        data.operator = jsonObj.getString("operator");
        data.value = jsonObj.getString("value");

        dataList.add(data);
    }

现在dataList有您的数据!

PS:在Data类中使用getter / setter

JAR: http//www.java2s.com/Code/Jar/j/Downloadjavajsonjar.htm

您可以使用诸如org.glassfish.javax.json类的JSon库来org.glassfish.javax.json

在Maven中使用

    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.json</artifactId>
        <version>1.0.4</version>
    </dependency>

然后将字符串读取到JsonArray:

JsonArray ja = Json.createReader(new StringReader(input)).readArray();

然后迭代列表,将对象映射到只有您需要的值的新对象:

List<JsonObject> list = ja.stream()
                          .map(o -> (JsonObject) o)
                          .map(jo -> Json.createObjectBuilder()
                                         .add("id", jo.getJsonString("id"))
                                         .add("operator", jo.getJsonString("operator"))
                                         .add("value", jo.getJsonString("value")).build())
                          .collect(Collectors.toList());

如果您不能使用JsonObject作为输出,您可以使用值对象 - 就像Himanshu Tyagi建议的那样 - 并将值映射到该对象。

在您的情况下,我认为,应该将JSON解析为List<Map<String,String>> 这可以使用Jackson完成。 以下是将JSON字符串转换为List<Map<String,String>>

public static List<Map<String, String>> toList(String json) throws IOException {

    List<Map<String, String>> listObj;

    ObjectMapper MAPPER = new ObjectMapper();

    listObj = MAPPER.readValue(json, new TypeReference<ArrayList<HashMap<String, String>>>() {
    });

    return listObj;
}

如果您已为其创建了POJO类,则可以使用:

public static List<PojoClass> toList(String json) throws IOException {

    List<PojoClass> listObj;

    ObjectMapper MAPPER = new ObjectMapper();

    listObj = MAPPER.readValue(json, new TypeReference<ArrayList<PojoClass>>() {
    });

    return listObj;
}

Jackson Maven依赖:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.6.3</version>
</dependency>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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