アクション クラスでは、従来の方法で Bean のリストを取得します。次に、Gson を使用して、このオブジェクト リストを json 文字列に変換します。これはうまく機能します(次のように確認できます):
"{ "employees" : [{ "firstName":"John" , "lastName":"Doe" }, {"firstName":"Anna" , "lastName":"Smith" } , { "firstName":"Peter" , "lastName":"Jones" } ]}";
最後に、freemarker ファイルでこの変数 (String JSon) を取得しますが、その中ですべての二重引用符が「& quote;」に置き換えられています。
<@sjg.grid id="gridtable"
caption="My title"
dataType="json"
href="${remoteurl}"
pager="true"
gridModel="${employeesInJsonString?js_string}"
rowList="10,15,20"
rowNum="15"
rownumbers="true">
<sjg:gridColumn name="firstName" index="firstName" title="FirstName" sortable="false"/>
<sjg:gridColumn name="lastName" index="lastName" title="LastName" sortable="false"/>
結果の文字列は次のとおりです。
"{ & quote;employees& quote; : [{ & quote;firstName& quote;:& quote;John& quote; , & quote;lastName& quote;:& quote;Doe& quote; }, {& quote;firstName& quote;:& quote;Anna& quote; , & quote;lastName& quote;:& quote;Smith& quote; } , { & quote;firstName& quote;:& quote;Peter" , & quote;lastName& quote;:& quote;Jones& quote; } ]}";
この変化を防ぐには?
PS:文字をエスケープするために、すべての二重引用符の前にバックスラッシュを付けようとしましたが、結果は同じです (resultJsonString = jsonString.replaceAll("\"", "\\""))。
よろしくお願いいたします。