Java:将JSON对象转换为Custom JSON

时间:2018-06-05 19:14:39

标签: java json rest soap-client

将SOAP响应转换为JSON(使用API​​),因此现在需要自定义JSON响应,删除一些属性并更改字段名称。如下面的例子。

示例:

{
  "s:Envelope": {
    "xmlns:s": "http://schemas.xmlsoap.org/soap/envelope/",
    "s:Body": {
      "Response": {
        "xmlns": "http://www.tempuri.org/",
        "Result": {
          "xmlns:a": "http://wwww.datacontract.org/",
          "a:CodeSet": [
            {
              "a:FullDescription": {
                "i:nil": true
              },
              "a:AgeFrom": {
                "i:nil": true
              },
              "a:ShortDescription": {
                "i:nil": true
              },
              "a:Code": "111111",
              "a:LongDescription": "Have a Nice Day",
              "a:EffectiveDate": "01/01/2017"
            },
            {
              "a:FullDescription": {
                "i:nil": true
              },
              "a:AgeFrom": {
                "i:nil": true
              },
              "a:ShortDescription": {
                "i:nil": true
              },
              "a:Code": "222222",
              "a:LongDescription": "Long Working Day",
              "a:EffectiveDate": "01/01/2018"
            }
          ]
        }
      }
    }
  }
}

要:

   {
  "data": [
    {
      "CODE": "111111",
      "EFFECTIVE_DATE": "2017-01-01",
      "TERM_DATE": "9999-12-31",
      "AGE_FROM": "true",
      "SHORT_DESC": "HND",
      "LONG_DESC": "Have a Nice Day"
    },
    {
      "CODE": "2222222",
      "EFFECTIVE_DATE": "2018-01-01",
      "TERM_DATE": "9999-12-31",
      "AGE_FROM": "true",
      "SHORT_DESC": "LWD",
      "LONG DESC": "Long Working Day"
    }
  ]
}

关于转换它的简单方法的建议,是指任何API或注释吗? 注意:响应时间已超过15秒。

2 个答案:

答案 0 :(得分:0)

执行以下操作

  1. 写两个映射两个json字符串的类。
  2. 将第一个json String转换为其Corresponding的json对象
  3. 编写逻辑以将步骤2中的对象映射到第二个对象
  4. 将您的第二个对象转换为JSon String。
  5. 注意:有很多方法可以转换To / From json Java对象From / To Json String,并且有大量的资源可以在线查看。我离开了你,研究什么是最适合你的需要。

答案 1 :(得分:0)

您可以尝试使用JSON-P 1.1。以下是Adam Bien博客的一个例子:

import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonArrayBuilder;
import javax.json.JsonObject;
//...

@Test
public void jsonObjectUpdate() {
    String key = "update";
    String JAVA_EE_8 = "is easy with Java EE 8";

    JsonObject initial = Json.createObjectBuilder().
        add(key, "was hard in Java EE 7").
        build();

    JsonObject updated = Json.createObjectBuilder(initial).
        add(key, JAVA_EE_8).
        build();

    assertThat(updated.getString(key), is(JAVA_EE_8));
    assertThat(updated.size(), is(1));
}

完整文章在这里:http://www.adam-bien.com/roller/abien/entry/updating_jsonobjects_with_json_p

或者,如果你想要一个更面向对象的aproach,你应该添加自己的JsonObject实现(这也是JSON-P规范)。您的实现将接受初始JsonObject的ctor并实现用于从中提取和返回data JsonArray的逻辑。