0

Java を使用して XPages「XAgent」から Json を作成しようとしています。私が試みている特定のフォーマットがあり、整数をキーとして使用しているため、理解できないエラーが発生し続けます。

エラーの例を次に示します。 ) com.ibm.commons.util.io.json.JsonGenerator$Generator.outLiteral(JsonGenerator.java:163) で com.ibm.commons.util.io.json.JsonGenerator$Generator.outLiteral(JsonGenerator.java:142) で) com.ibm.commons.util.io.json.JsonGenerator$Generator.toJson(JsonGenerator.java:138) で com.ibm.commons.util.io.json.JsonGenerator.toJson(JsonGenerator.java:64) でcom.ibm.commons.util.io.json.JsonGenerator.toJson(JsonGenerator.java:49)

次のような JSON 出力を作成しようとしています。

[
  {
     // minimum 
     0:{src:'item_one_format_one.ext', type: 'video/...'}     
  },
  {
     // one content, multiple formats
     0:{src:'item_two_format_one.ext', type: 'video/...'},
     1:{src:'item_two_format_two.ext', type: 'video/...'}
  },
  {
     // one content, multiple formats, item specific config
     0:{src:'item_three_format_one.ext', type: 'video/...'},
     1:{src:'item_three_format_two.ext', type: 'video/...'},
     3:{src:'item_three_format_three.ext', type: 'video/...'},
     4:{src:'item_three_format_four.ext', type: 'video/...'},          
     config: {
        option1: value1,
        option2: value2
     }

]      

複数の「オブジェクト」ではなく、最後のオブジェクトはキー値の整数と文字列の組み合わせのようです。

ここに私が試してみたいくつかのコードがあります:

public String testList() throws JsonException, IOException {

        Integer count = 0;

        Map<String, Object> containerMap = new TreeMap<String, Object>();
        System.out.println("A");


        TreeMap<String, String> stringMap = new TreeMap<String, String>();
        System.out.println("B");
        stringMap.put("One", "Value1");
        stringMap.put("Two", "Value2");
        System.out.println("C");

        containerMap.put("1", "One");
        count++;
        containerMap.put("2", "Two");
        count++;
        containerMap.put("3", "Three");

        System.out.println("D");

        String json = JsonGenerator.toJson(new JsonJavaFactory(), containerMap);
        System.out.println("E");
        return json;

    }

このコードは以下を生成します:

{
    "1": "Zero",
    "2": "One",
    "3": "Two"
}

キー値の引用符に注意してください。問題になると思います。キーの整数を取得できるようになりました。そして、3番目のオブジェクトの例に見られるように、整数と文字列を混在させる方法がわかりません。

アドバイスをいただければ幸いです。ありがとう!

4

2 に答える 2

4

次のように整数を使用することはできません: {0: {...}} プロパティは文字列である必要があります: {"0": {...}}

代わりに配列が必要かもしれません:

{ // one content, multiple formats, item specific config videoList: [ {src:'item_three_format_one.ext', type: 'video/...'}, {src:'item_three_format_two.ext', type: 'video/...'}, {src:'item_three_format_three.ext', type: 'video/...'}, {src:'item_three_format_four.ext', type: 'video/...'} ], vidoConfig: { option1: value1, option2: value2 } }

よろしく、 チェマヌ

于 2014-06-01T07:33:49.497 に答える
1

Gsonを使用してください。頭痛のトンを保存します。セキュリティが機能するには、プラグインに含まれている必要があります。コレクションとマップなどで結果クラスを作成します。次に、2行あります:

   Gson g = new Gson();
   g.toJson(this);

ビルダーと、プリティ プリントや変数名とは異なる要素の命名などのオプション用のいくつかの注釈があります。

高所でガラスをつついた。タイプミスが含まれます。

于 2014-06-01T00:46:16.930 に答える