2017-01-25 24 views
1

JsonObjectをXMLに変換しようとしていますが、エンコードされているようです。入手:" JsonオブジェクトをJavaの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>フォーマットをエンコードせずにあります。

私はinvoiceDetailObjにプロパティを追加

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

XMLにJSONオブジェクトを変換するためにorg.json.XMLを使用しているので、そのは、現在私がトップ

xml = XML.toString(invoiceDetailObj); 
+0

(私たちは例えば、 'invoiceDetailObj'が何であるかを知らない多くのコードを提供してください。 'String'ですか? 'JSONObject'?) – n00dl3

+0

Nop invoiceDetails objは - JsonObjectです。invoiceDetailObj = new JsonObject();私はより多くのデータとそのようなものを追加しました。 –

+0

'{" customerName ":" cus1 "、...}'は 'invoiceDetailObj'に入れられますか? – kennytm

答えて

1

に追加したjsonObjようになっていることをご問題は、からGoogle Gsonまでをorg.json.JSONObjectと混在させるという事実に関連しています。実際には、メソッドXML.toString(object)は、org.json.JSONObjectまたはorg.json.JSONArrayのインスタンスまたはorg.json.JSONObjectの配列を想定しているため、これらの型が見つからない場合のこのメソッドのデフォルト動作です。あなたがStringとしてあなたJSONオブジェクトを持っている場合、あなたは、単に使用することができ、

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

あるいはさらに良い:

は単に代わりcom.google.gson.JsonObjectorg.json.JSONObjectを使用するようにコードを書き換え、あなたのコードは、このようなもののようになります。それはあなたのためにJSONObjectを解析して構築できるようにするコンストラクタJSONObject(String source)

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

この問題を修正していただきありがとうございます –

関連する問題