获取:&;引用;在Java中将Json对象转换为XML时
我正在尝试将JsonObject转换为XML,但它似乎被编码了 这是我的JsonObject-获取:&;引用;在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", "
{
"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();谢谢,这解决了问题