簡體   English   中英

將JSONArray轉換為List <HashMap<String,Object> &gt;在沒有GSON的java中

[英]Convert JSONArray to List<HashMap<String,Object>> in java without GSON

我有一個來自net.minidev.jsonJSONArray ,我想將其轉換為List<HashMap<String,Object>>

使用Gson轉換JSONArray有很多答案。

但是,我無法將Gson添加為我的pom.xml的依賴項,因此我正在尋找一種使用Java-8功能實現它的方法。

我的JSONArray是這樣的:它包含多個層次結構

[
  {
    "data": {
      "name": "idris"
    },
    "children": [
      {
        "processStandardDeduction": 69394,
        "cropId": 1,
        "data": null,
        "expectedQuantityPerAcre": 1220,
        "name": "Red Tomato 1 quality",
        "id": 1003,
        "autoArchivePlotDays": 59902
      },
      {
        "processStandardDeduction": 69394,
        "cropId": 1,
        "autoArchivePlotDays": 59902
      },
      {
        "processStandardDeduction": 69394,
        "cropId": 1,
        "autoArchivePlotDays": 59902
      }
    ],
    "name": "Red Tomato",
    "id": 1002
  },
  {
    "data": null,
    "name": "Red Tomato 1 quality",
    "id": 1003,
    "processStandardDeduction": 69394,
    "cropId": 1,
    "expectedQuantityPerAcre": 1220,
    "cropName": "Tomato",
    "autoArchivePlotDays": 59902
  },
  {
    "data": null,
    "name": "Red Tomato 3 quality",
    "id": 1001,
    "processStandardDeduction": 69394,
    "autoArchivePlotDays": 59902
  },
  {
    "processStandardDeduction": 69394,
    "cropId": 1,
    "data": null,
    "id": 1004,
    "autoArchivePlotDays": 59902
  }
]

我想在List>中實現相同的結構

我嘗試通過將JSONArray的每個元素轉換為每個HashMap<String,Object>然后將其添加到List<HashMap<String,Object>>來循環它們。

ObjectMapper mapper = new ObjectMapper();
List<HashMap<String, Object>> cropDetailsList = new ArrayList<>();
        for (Object eachCropJson : cropDetails) { //cropDetails is the JSONArray

            HashMap<String, Object> eachCropMap = (HashMap<String, Object>) mapper.convertValue(eachCropJson,
                    HashMap.class);
            cropDetailsList.add(eachCropMap);
        }
return cropDetailsList;

我想在不使用forEach的情況下嘗試使用Java-8功能的更好方法。 提前致謝。

如果將此JSON作為String獲取,則可以使用ObjectMapper.readValue方法

readValue(String content, TypeReference valueTypeRef)

List<HashMap<String, Object>> cropDetailsList = mapper.readValue(jsonString,
                                   new TypeReference<List<HashMap<String, Object>>>(){});

以同樣的方式,如果你想迭代JSONArray

List<HashMap<String, Object>> cropDetailsList = cropDetails.stream()
            .map(eachCropJson->(HashMap<String, Object>) mapper.convertValue(eachCropJson, HashMap.class))
            .collect(Collectors.toList());

使用流可以完成

List<HashMap<String, Object>> output = cropDetails.toList().stream().map(m -> ((HashMap<String, Object>) m)).collect(Collectors.toList());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM