【问题标题】:Getting :" when converting Json object to XML in Java在 Java 中将 Json 对象转换为 XML 时获取:"
【发布时间】:2017-06-10 08:52:30
【问题描述】:

我正在尝试将 JsonObject 转换为 XML,但它似乎已被加密。

这是我的 JsonObject -

{
  "customerName": "cus1",
  "invoiceNumber": "in1",
  "invoiceDate": "2017-01-23",
  "amount": 110.1,
  "invoiceItems": [
    {
      "chargeName": "null",
      "subscriptionName": "TestSub",
      "amount": 129,
      "servicePeriod": "2017-01-23to 2017-02-23"
    },
    {
      "subscriptionName": "",
      "servicePeriod": "",
      "chargeDate": "",
      "chargeName": "Discounted Amount",
      "amount": -12.9
    }
  ]
}

我得到的输出是 -

{"customerName":"cus1;,"invoiceNumber":"in1;,"invoiceDate":"2017-01-23","amount":116.1,"invoiceItems":[{"chargeName":"null","subscriptionName":"TestSubd","amount":129.0,"servicePeriod":"2017-01-23to 2017-02-23"},{"subscriptionName":"","servicePeriod":"","chargeDate":"","chargeName":"Discounted Amount","amount":-12.9}]}"

我期望的输出没有编码<customerName>cus1<customerName> 格式。

我已经使用org.json.XML将json对象转换为xml

  JsonObject invoiceDetailObj = new JsonObject();
invoiceDetailObj.addProperty("customerName", aa.get("customer").asText());

我向 invoiceDetailObj 添加了属性,使其当前看起来像我在顶部添加的 jsonObj

 xml = XML.toString(invoiceDetailObj);

【问题讨论】:

  • 请提供更多代码(我们不知道invoiceDetailObj是什么,例如:StringJSONObject?)
  • Nop invoiceDetails obj is - JsonObject invoiceDetailObj = new JsonObject();我添加了更多数据,就像显示的那样。
  • {"customerName": "cus1", ...} 是如何放入invoiceDetailObj 的?
  • invoiceDetailObj.addProperty("customerName", aa.get("customer").asText());

标签: java json xml


【解决方案1】:

您的问题与您将Google Gson 中的com.google.gson.JsonObjectorg.json.JSONObject 混合使用有关。实际上,XML.toString(object) 方法需要一个 org.json.JSONObjectorg.json.JSONArrayorg.json.JSONObject 数组的实例,所以当没有找到这些类型时,您得到的只是此方法的默认行为。

只需重写您的代码以使用org.json.JSONObject 而不是com.google.gson.JsonObject,您的代码应该如下所示:

JSONObject invoiceDetailObj = new JSONObject();
invoiceDetailObj.put("customerName", "cus1");
invoiceDetailObj.put("invoiceNumber", "in1");
...
String xml = XML.toString(invoiceDetailObj);

或者更好的是,如果您将JSON 对象作为String,您可以简单地使用构造函数JSONObject(String source) 让它为您解析和构建JSONObject

String xml = XML.toString(new JSONObject(myJSONString));

【讨论】:

  • 感谢这解决了问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
  • 2012-05-29
  • 1970-01-01
  • 2018-04-14
  • 2020-09-29
  • 2013-11-27
  • 2013-06-01
相关资源
最近更新 更多