1

jsp プロジェクトで json taglib を使用しています。現在、次のコードを使用してjsonオブジェクトを構築しています:

<json:object prettyPrint="true">
    <json:array name="categories" var="cat" items="${categories}">
        <json:object>
            <json:property name="id" value="${cat.getId()}" />
            <json:array name="languages" var="lang" items="${cat.getCategorieslanguageses()}">
                <json:object>
                    <json:property name="${lang.getLanguages().getShortname()}" value="${lang.getValue()}" />
                </json:object>
            </json:array>
        </json:object>
    </json:array>
</json:object>

getCategorieslanguages() は、言語の配列を返します。このコードは、次の出力を提供します。

{"categories": [
  {
    "id": 3,
    "languages": [
      {"nl": "Vlees"},
      {"eng": "Meat"}
    ]
  },
  {
    "id": 2,
    "languages": [
      {"eng": "Fish"},
      {"nl": "Vis"}
    ]
  }
]}

したがって、このコードはうまく機能しますが、私が好む出力は次のとおりです。

{
    "categories": [
        {
            "id": 2,
            "languages": [
                {
                    "nl": "Vis",
                    "eng": "Fish"
                }
            ]
        },
        {
            "id": 3,
            "languages": [
                {
                    "eng": "Meat",
                    "nl": "Vlees"
                }
            ]
        }
    ]
}

taglib json を使用してこの出力を作成するのを手伝ってくれる人はいますか? ありがとうございました。

4

1 に答える 1

0

これを行ういくつかの方法。

  1. またはprettyPrint="true"ごとに設定します。json:objectjson:array

  2. ページ、リクエスト、セッション、またはアプリケーション属性atg.taglib.json.prettyPrintを true または false に設定する。

  3. Web アプリの web.xml ファイルに context-parm を設定する。

http://json-taglib.sourceforge.net/tutorial.html

編集:最初は、出力のフォーマット後にいると思いました。

"languages": [
      {"eng": "Fish"},
      {"nl": "Vis"}
    ]

これを解釈すると、 という名前の配列がlanguagesあり、この配列には 2 つのオブジェクトが含まれており、最初のオブジェクトには という名前の属性がengあり、値はFishです。2 番目のオブジェクトには、 という名前の属性がn1あり、値はFishです。

"languages": [
                {
                    "eng": "Meat",
                    "nl": "Vlees"
                }
            ]

これを解釈すると、 という名前の配列がlanguagesあり、この配列にはオブジェクトだけが含まれています。オブジェクトには 2 つの属性があり、1 つは value で名前が付けられ、もう 1 つengは valueで名前がMeat付けられn1ますVlees

ただの好奇心、すべきではない

<json:property name="${lang.getLanguages().getShortname()}" value="${lang.getValue()}" />

なれ

<json:property name="${lang.getLanguages().getShortname()}" value="${lang.getLanguages().getValue()}" />
于 2012-11-15T16:05:19.113 に答える