将更改添加到JSON结构

时间:2019-10-08 16:05:46

标签: java json

我在Android应用程序中生成了以下JSON:

{
  "Details": {
    "ClaimDate": "08/10/2019",
    "HFCode": "55555"
  },
  "Items": [
    {
      "Item": {
        "ItemCode": "Y203",
        "ItemPrice": "20",
        "ItemQuantity": "1"
      }
    }
  ],
  "Services": [
    {
      "Service": {
        "ServiceCode": "X105",
        "ServicePrice": "200",
        "ServiceQuantity": "1"
      }
    }
  ]
}

在服务器端,我需要这种结构

{
  "details": {
    "ClaimDate": "08/10/2019",
    "HFCode": "55555"
  },
  "items": [
    {
      "itemCode": "Y200",
      "itemPrice": 0,
      "itemQuantity": 0
    }
  ],
  "services": [
    {
      "serviceCode": "X100",
      "servicePrice": 0,
      "serviceQuantity": 0
    }
  ]
}

是否可以在Android应用程序端自定义此功能?

我尝试手动进行操作,但效果不理想

2 个答案:

答案 0 :(得分:0)

您可以使用转换函数,该函数将第一个json / object作为输入并返回第二个json / object作为输出。不幸的是,由于密钥和数据类型不同,因此标准库将无法执行此操作。如果要使用Jackson或Gson,则必须使用自定义(De)序列化器。

答案 1 :(得分:0)

如果您正在使用Jackson(最受欢迎的JSON库之一),而只想将给定的JSON字符串转换为另一个,则可以通过以下方式实现:

ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(jsonStr);

ObjectNode rootNew = mapper.createObjectNode();
rootNew.put("details", root.get("Details"));

JsonNode itemNode = root.get("Items").get(0).get("Item");
ObjectNode itemsNodeNew = mapper.createObjectNode();
itemsNodeNew.put("itemCode", itemNode.get("ItemCode"));
itemsNodeNew.put("itemPrice", itemNode.get("ItemPrice"));
itemsNodeNew.put("itemQuantity", itemNode.get("ItemQuantity"));
rootNew.put("items", mapper.createArrayNode().add(itemsNodeNew));

JsonNode serviceNode = root.get("Services").get(0).get("Service");
ObjectNode serviceNodeNew = mapper.createObjectNode();
serviceNodeNew.put("serviceCode", serviceNode.get("ServiceCode"));
serviceNodeNew.put("servicePrice", serviceNode.get("ServicePrice"));
serviceNodeNew.put("serviceQuantity", serviceNode.get("ServiceQuantity"));
rootNew.put("services", mapper.createArrayNode().add(serviceNodeNew));

System.out.println(rootNew.toString());

但是,如果您想将JSON字符串转换为POJO以便进行进一步的操作,则可以直接对其进行反序列化和序列化。

相关问题