【问题标题】:Java: Convert JSON object to Custom JSONJava:将 JSON 对象转换为自定义 JSON
【发布时间】:2018-06-05 19:14:38
【问题描述】:

将 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 秒。

【问题讨论】:

  • 将您的 XML 传递给一个对象,然后将该对象传递给一个 JSON。它有什么问题?

标签: java json rest soap-client


【解决方案1】:

如下操作

  1. 编写两个映射两个 json 字符串的类。
  2. 将第一个json字符串转换为其对应的json对象
  3. 编写一个逻辑,将步骤 2 中的对象映射到您的第二个对象
  4. 将您的第二个对象转换为 JSON 字符串。

注意:有很多方法可以将 json Java 对象 From/To Json String 转换为/从,网上有很多资源可以研究。我把它留给你研究什么最适合你的需要。

【讨论】:

    【解决方案2】:

    您可以尝试使用 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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-27
      • 2023-03-11
      • 1970-01-01
      • 2011-01-15
      • 2015-10-09
      • 1970-01-01
      相关资源
      最近更新 更多