亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Java中的公共數組中按屬性對json對象列表進行分組

在Java中的公共數組中按屬性對json對象列表進行分組

哈士奇WWW 2023-09-20 17:30:42
我想問是否可以通過其公共數組內的另一個對象對該對象進行分組。這是 JSON 響應,我需要按程序 id對項目列表進行分組。我試圖將它放在 HashMap 上,但效果不佳。{"id": "","ordered_by": 64,"order_details": [    {        "resource": "Product",        "required_prescription": false,        "item": {            "id": 6,            "name": "Synergistic Copper Gloves",            "code": "51537661-C",            "enabled": true,            "generic_name": "Mediocre Steel Wallet",            "price_cents": 200000        },        "program": {            "id": 12,            "name": "Synergistic Wooden Shoes",            "provider": "Synergistic Rubber Coat",            "discount_type": "fixed"        }    },    {        "resource": "Product",        "required_prescription": true,        "item": {            "id": 7,            "name": "Rustic Leather Table",            "code": "74283131-P",            "enabled": true,            "generic_name": "Incredible Bronze Clock",            "price_cents": 8994        },        "program": {            "id": 12,            "name": "Synergistic Wooden Shoes",            "provider": "Synergistic Rubber Coat",            "discount_type": "fixed"        }    },    {        "resource": "Product",        "required_prescription": false,        "item": {            "id": 116,            "name": "Ergonomic Marble Hat",            "code": "98845056-A",            "enabled": true,            "generic_name": "Incredible Granite Lamp",            "price_cents": 8267        },        "program": {            "id": 10,            "name": "Durable Rubber Bag",            "provider": "Aerodynamic Steel Chair",            "discount_type": "fixed"        }    }]}所有評論將受到高度贊賞。提前致謝!
查看完整描述

2 回答

?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

我已經獲取了您的源 json 并嘗試按照您的規范進行轉換,這是有效的解決方案,將您的源 JSON 作為字符串傳遞,您將獲得所需的輸出


private String parseJson(String source) {

    JSONArray result = new JSONArray();

    List<Integer> ids = new ArrayList<>();

    HashMap<Integer,JSONObject> programs = new HashMap<>();

    try {

        JSONObject jSource = new JSONObject(source);

        JSONArray orderDetails = jSource.getJSONArray("order_details");

        if (orderDetails.length() > 0) {

            for (int i = 0; i < orderDetails.length(); i++) {

                JSONObject jsonObject = orderDetails.getJSONObject(i);

                JSONObject item = jsonObject.getJSONObject("item");

                JSONObject program = jsonObject.getJSONObject("program");

                int programId = jsonObject.getJSONObject("program").getInt("id");

                if (!ids.contains(programId)) {

                    ids.add(programId);

                    program.put("item",new JSONArray().put(item));

                    programs.put(programId,program);

                }else{

                    program.put("item",programs.get(programId).getJSONArray("item").put(item));

                }

            }


            for(int k :programs.keySet()){

                result.put(programs.get(k));

            }


        }


    } catch (Exception e) {

        e.printStackTrace();

    }


    return result.toString();

}


查看完整回答
反對 回復 2023-09-20
?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

JSON庫Josson可以通過簡單的表達式轉換JSON。

https://github.com/octomix/josson

反序列化

Josson josson = Josson.fromJsonString(

    "{" +

    "\"id\": \"\"," +

    "\"ordered_by\": 64," +

    "\"order_details\": [" +

    "    {" +

    "        \"resource\": \"Product\"," +

    "        \"required_prescription\": false," +

    "        \"item\": {" +

    "            \"id\": 6," +

    "            \"name\": \"Synergistic Copper Gloves\"," +

    "            \"code\": \"51537661-C\"," +

    "            \"enabled\": true," +

    "            \"generic_name\": \"Mediocre Steel Wallet\"," +

    "            \"price_cents\": 200000" +

    "        }," +

    "        \"program\": {" +

    "            \"id\": 12," +

    "            \"name\": \"Synergistic Wooden Shoes\"," +

    "            \"provider\": \"Synergistic Rubber Coat\"," +

    "            \"discount_type\": \"fixed\"" +

    "        }" +

    "    }," +

    "    {" +

    "        \"resource\": \"Product\"," +

    "        \"required_prescription\": true," +

    "        \"item\": {" +

    "            \"id\": 7," +

    "            \"name\": \"Rustic Leather Table\"," +

    "            \"code\": \"74283131-P\"," +

    "            \"enabled\": true," +

    "            \"generic_name\": \"Incredible Bronze Clock\"," +

    "            \"price_cents\": 8994" +

    "        }," +

    "        \"program\": {" +

    "            \"id\": 12," +

    "            \"name\": \"Synergistic Wooden Shoes\"," +

    "            \"provider\": \"Synergistic Rubber Coat\"," +

    "            \"discount_type\": \"fixed\"" +

    "        }" +

    "    }," +

    "    {" +

    "        \"resource\": \"Product\"," +

    "        \"required_prescription\": false," +

    "        \"item\": {" +

    "            \"id\": 116," +

    "            \"name\": \"Ergonomic Marble Hat\"," +

    "            \"code\": \"98845056-A\"," +

    "            \"enabled\": true," +

    "            \"generic_name\": \"Incredible Granite Lamp\"," +

    "            \"price_cents\": 8267" +

    "        }," +

    "        \"program\": {" +

    "            \"id\": 10," +

    "            \"name\": \"Durable Rubber Bag\"," +

    "            \"provider\": \"Aerodynamic Steel Chair\"," +

    "            \"discount_type\": \"fixed\"" +

    "        }" +

    "    }" +

    "]}");

轉型


JsonNode node = josson.getNode(

    "order_details.group(program, item).field(program:, **:program)");

System.out.println(node.toPrettyString());

輸出


[ {

  "item" : [ {

    "id" : 6,

    "name" : "Synergistic Copper Gloves",

    "code" : "51537661-C",

    "enabled" : true,

    "generic_name" : "Mediocre Steel Wallet",

    "price_cents" : 200000

  }, {

    "id" : 7,

    "name" : "Rustic Leather Table",

    "code" : "74283131-P",

    "enabled" : true,

    "generic_name" : "Incredible Bronze Clock",

    "price_cents" : 8994

  } ],

  "id" : 12,

  "name" : "Synergistic Wooden Shoes",

  "provider" : "Synergistic Rubber Coat",

  "discount_type" : "fixed"

}, {

  "item" : [ {

    "id" : 116,

    "name" : "Ergonomic Marble Hat",

    "code" : "98845056-A",

    "enabled" : true,

    "generic_name" : "Incredible Granite Lamp",

    "price_cents" : 8267

  } ],

  "id" : 10,

  "name" : "Durable Rubber Bag",

  "provider" : "Aerodynamic Steel Chair",

  "discount_type" : "fixed"

} ]


查看完整回答
反對 回復 2023-09-20
  • 2 回答
  • 0 關注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號