获取:&;引用;在Java中将Json对象转换为XML时

获取:&;引用;在Java中将Json对象转换为XML时,java,json,xml,Java,Json,Xml,我正在尝试将JsonObject转换为XML,但它似乎被编码了 这是我的JsonObject- { "customerName": "cus1", "invoiceNumber": "in1", "invoiceDate": "2017-01-23", "amount": 110.1, "invoiceItems": [ { "chargeName": "null", "subscriptionName": "TestSub", "

我正在尝试将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}]}"
我期望的输出没有编码
cus1
格式

我使用了
org.json.XML
将json对象转换为XML

  JsonObject invoiceDetailObj = new JsonObject();
invoiceDetailObj.addProperty("customerName", aa.get("customer").asText());
我向invoiceDetailObj添加了属性,使其当前看起来像我在顶部添加的jsonObj

 xml = XML.toString(invoiceDetailObj);

您的问题与这样一个事实有关:您将来自的
com.google.gson.JsonObject
org.json.JsonObject
混合使用。实际上,方法
XML.toString(object)
需要一个
org.json.JSONObject
org.json.JSONArray
的实例,或者一个
org.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));

请提供更多代码(我们不知道什么是
invoiceDetailObj
,例如:
String
JSONObject
?)Nop invoiceDetails obj是-JSONObject invoiceDetailObj=new JSONObject();我添加了更多的数据,如图所示。如何将
{“customerName”:“cus1”,…}
放入
invoiceDetailObj
?invoiceDetailObj.addProperty(“customerName”,aa.get(“customer”).asText();谢谢,这解决了问题