Java 如何将Json字符串转换为List?

Java 如何将Json字符串转换为List?,java,json,gson,Java,Json,Gson,我使用Java创建比较数据A和每个数据 首先,我确实从文件中的txt文件数组类型中提取了数组数据 其次,我的数据库MySQL列类型中有一个Json字符串数据:Json 我解析了txt文件并制作了列表 FileInputStream fstream = new FileInputStream(Path); List<HashMap<String, String>> list = list(fstream); public List<HashMap<String

我使用Java创建比较数据A和每个数据

首先,我确实从文件中的txt文件数组类型中提取了数组数据

其次,我的数据库MySQL列类型中有一个Json字符串数据:Json

我解析了txt文件并制作了列表

FileInputStream fstream = new FileInputStream(Path);
List<HashMap<String, String>> list = list(fstream);

public List<HashMap<String, String>> list(FileInputStream fstream) {
  BufferedReader buff = new BufferedReader(new InputStreamReader(fstream));
  List<HashMap<String, String> list = new ArrayList<>();

  try {
    while ((strLine = buff.readLine()) != null) {
      s = strLine.split(" ");
      HashMap<String, String> map = new HashMap<>();
      pts = s[4].split(":")[1];
      ptstime = s[5].split(":")[1];
      map.put("pts", pts);
      map.put("ptstime", getDurationString(ptstime));
      if (pts_itv.equals("0") && ptstime_itv.equals("00:00")) {
        map.put("pts_itv", "0");
        map.put("ptstime_itv", "00:00");
      }
      else {
        map.put("pts_itv", String.valueOf(Long.parseLong(pts) - Long.parseLong(pts_itv)));
        map.put("ptstime_itv", getDurationString(String.valueOf(String.format("%.4f", Double.parseDouble(ptstime) - Double.parseDouble(ptstime_itv)))));
      }
      pts_itv = pts;
      ptstime_itv = ptstime;
      list.add(map);
    }
  }
  catch (IOException ex) {
        LOG.error("ERROR : " + ex.getLocalizedMessage() + ", " + ex.getMessage());
  }
  finally {
    try {
      buff.close();
    } catch (IOException ex) {}
  }
  return list;
}
我可以得到索引键,对象键

list.get(0).get("pts_itv");
第二个数据从MySQL列JSON类型中选择查询

rs = Web.getInstance().getList(idx); //get data by sql query
jObj = (JSONObject) new JSONParser().parse(rs);
jArr = (JSONArray) jObj.get("data");
for (int i = 0; i < jArr.size(); i++) {
  JSONObject Jarr = (JSONObject) jArr.get(i);
  System.out.println(Jarr.get("PtsData"));
}

我想将PtsData转换为第一种数据类型。如何将PtsData转换为列表类型?

以下是解决此问题的一些建议

在真正需要字符串操作之前不要使用它们,您可以通过使用JSON库解析JSON数据来避免拆分。编写的代码越多,引入的bug越多,需要的维护也越多。 使用对象建模。在HashMap中使用它会更具可读性。通过定义peroperties pts、pts_itv、ptstime、ptstime_itv创建对象模型。然后选择您的键和值。定义equals和hashcode。然后用自己的方法或使用equals检查对象的相等性。
使用或感谢Sampada。我使用gson.fromJson解决了这个问题:
rs = Web.getInstance().getList(idx); //get data by sql query
jObj = (JSONObject) new JSONParser().parse(rs);
jArr = (JSONArray) jObj.get("data");
for (int i = 0; i < jArr.size(); i++) {
  JSONObject Jarr = (JSONObject) jArr.get(i);
  System.out.println(Jarr.get("PtsData"));
}
[{"pts": "81831", "pts_itv": "0", "ptstime": "00:00:03.40963", "ptstime_itv": "00:00"}, {"pts": "127877", "pts_itv": "46046", "ptstime": "00:00:05.32821", "ptstime_itv": "00:00:01.9186"}, {"pts": "157907", "pts_itv": "30030", "ptstime": "00:00:06.57946", "ptstime_itv": "00:00:01.2512"}]
java.lang.String