簡體   English   中英

Java - Json數組到json對象

[英]Java - Json array to json object

這似乎很簡單,但我正在努力改變這個:

{
    "myList": [{
        "id": 1,
        "type": "EnergyBox",
        "properties": ["Name : Eb1", "Prop2 : Val1", "PropN : ValN"]
    }, {
        "id": 2,
        "type": "EnergyBox",
        "properties": ["Name : Eb2", "Prop2 : Val2", "Prop3 : Val3"]
    }]
}

進入這個:

{
    "myList": [{
        "id": 1,
        "type": "EnergyBox",
        "properties": {
            "Name": "Eb1",
            "Prop2": "Val1",
            "PropN": "ValN"
        }
    }, {
        "id": 2,
        "type": "EnergyBox",
        "properties": {
            "Name": "Eb2",
            "Prop2": "Val2",
            "Prop3": "Val3"
        }
    }]
}

我正在使用Java 8,Jackson和Simplejson來解析數據,但不知何故,經過幾個小時的嘗試,仍然沒有工作。

像一個字符串這樣的屬性中的鍵值是否可以? 為此目的,這應該工作:

        JSONParser parser = new JSONParser();
        JSONObject json = (JSONObject) parser.parse(jsonString);
        JSONArray array = (JSONArray) json.get("myList");
        for( int i = 0; i < array.size(); i++) {
            JSONObject object = (JSONObject) array.get(i);
            JSONArray jsonArray = (JSONArray) object.get("properties");
            JSONObject newJObj = new JSONObject();
            for(int j = 0; j < jsonArray.size(); j++) {
                String[] keyValue = jsonArray.get(j).toString().split(" : ");
                newJObj.put(keyValue[0], keyValue[1]);
            }
            newJObj.toJSONString();
            object.put("properties", newJObj);
        }
        json.toJSONString();

我試圖根據您的要求轉換Json,嘗試以下代碼。

public void test() throws JsonParseException, JsonMappingException, IOException {


    String json = "{"+
                        "\"myList\": [{"+
                        "\"id\": 1,"+
                        "\"type\": \"EnergyBox\","+
                        "\"properties\": [\"Name : Eb1\", \"Prop2 : Val1\", \"PropN : ValN\"]"+
                    "}, {"+
                        "\"id\": 2,"+
                        "\"type\": \"EnergyBox\","+
                        "\"properties\": [\"Name : Eb2\", \"Prop2 : Val2\", \"Prop3 : Val3\"]"+
                    "}]"+
                "}";

    ObjectMapper mapper = new ObjectMapper();
    JsonNode root = mapper.readTree(json);
    JsonNode myList = root.get("myList");
    myList.forEach(n -> {
        System.out.println(n);
        System.out.println(n.get("properties"));
        ObjectNode updatedProperties = mapper.createObjectNode();
        n.get("properties").forEach(p -> {
            String[] vals = p.textValue().split(":");
            updatedProperties.put(vals[0].trim(), vals[1].trim());
        });
        ((ObjectNode)n).put("properties", updatedProperties);
    });

    System.out.println(myList);


}
           JSONObject response= Array.getJSONObject(insert_your_Response);

       try {
            JSONArray Array = response.getJSONArray("myList");

            assert Array != null;
            for (int k = 0; k < Array.length(); k++) {

                try {
                    JSONObject object1 = Array.getJSONObject(k);
                    int  id = object1.getInt("id");
                    String type = object1.getString("type");
                    JSONObject  propertiesObject=object1.getJSONObject("properties");

                    String Name = propertiesObject.getString("Name");
                    String Prop2 = propertiesObject.getString("Prop2");
                    String Prop3 = propertiesObject.getString("Prop3");

                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

暫無
暫無

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

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