ブラケットを使用した多くのデータ[]がプロジェクトデータベースに表示されました。このテストはバグを報告しました。トラブルシューティング後、JSON-Lib JARパッケージを使用することが原因でした。 JSON-LIBは、XML文字列をJSON形式に変換するプロセス中に、null値を[]に変換します。次に、2つのXMLからJSONパッケージの類似点と相違点を簡単に要約します。そのような質問は比較的基本的なものだからかもしれませんが、誰かがそのような質問をオンラインで尋ねましたが、答えは見つかりませんでした。私のようなジュニアプログラマーができるだけ早く問題を発見して解決するように促進するために、私はこのブログ投稿を書きました。
オンラインで見つけることができるXMLからJSONへのJARパッケージのほとんどは、net.sf.json-libです。このパッケージはJSONの解析でさらに使用されていますが、不利な点は、より多くの依存関係パッケージが必要であることです。しかし、ここで私は彼のXMLについてJSONと話すだけです。
1.net.sf.json-libからJson;
json json = xmlserializer.read(xml);
この方法の問題は、null値を[]に変換することです。 json.get(value).getClassを使用して[]のタイプを取得します。 JSON-LIBは、null値を文字列の代わりにjsonarrayタイプとして認識し、jsonarrayのtostringメソッドは[,,,]として書き直されていることがわかります。
それでもこの方法を使用したい場合は、次の変更を加えることができます。 getString()メソッドを使用してXMLから変換されたJSONオブジェクト値を取得する場合、最初にタイプが文字列であるかどうかを判断してから取得します。
json.get(value)instanceof string? json.getString(value): ""
2。ORG.JSONからJSON:
org.json.jsonobject jsonobj = org.json.xml.tojsonobject(xml);
[]値は生成されませんが、ルートタグは保持されます(標準XMLドキュメントには1つのルートタグのみがあり、いわゆるルートタグは<rootタグ> </rootタグ>他のすべてのタグを含むペアです)、および一般的なルートタグはデータに対して無意味です。
jsonobj.get( "root");
これがテストコードです:
パッケージcom.pptv.ppvision.util; Import org.json.xml; net.sf.json.jsonobjectをインポートします。 net.sf.json.xml.xmlserializerをインポートします。 public class xml2jsontest {private static string xml = "<root> <user> <name> welles </name> <sex> </sex> </user> </root>"; public static void main(string [] args){testorgjson(); testxmlserializer(); } public static void testorgjson(){org.json.jsonobject jsonobj = xml.tojsonobject(xml); System.out.println( "org.json xml2json:"+jsonobj); org.json.jsonobject user = jsonobj.getjsonobject( "root")。getjsonobject( "user"); // org.jsonはrootタグsystem.out.println( "user name:"+user.getString( "name"))を削除する必要があります。 System.out.println( "gender:"+user.getString( "sex")); } public static void testxmlserializer(){xmlserializer xmlserializer = new xmlserializer(); jsonobject jsonobject =(jsonobject)xmlserializer.read(xml); system.out.println( "json-lib xml2json result:"+jsonobject); jsonObject user = jsonobject.getJsonObject( "user"); System.out.println( "user name:"+user.get( "name")); System.out.println( "gender:"+(user.get( "sex")instanceof string?user.getString( "sex"): "")); }}ここにあなたのための2つの方法があります
1つは、getString()メソッドを使用してXMLから変換されたJSONオブジェクト値を取得し、最初にタイプが文字列であるかどうかを判断してから取得することです。
1つはorg.jsonです
ニーズに応じて使用する方法を選択できます