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

时间:2016-06-27 11:07:30

标签: java json collections

我在

字符串中获得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,运算符和值的值

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

在线: Working code

首先创建一个用于存储值的类:

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有您的数据!

P.S。 :在Data

中使用getter / setter

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

答案 2 :(得分:0)

您可以使用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建议的那样 - 并将值映射到该对象。

答案 3 :(得分:0)

在您的情况下,我认为,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>