0

現在、JQWidgets で Gson を使用しています。

ステップ 1: API を使用して gson を使用し、JQWidgets でサポートされている行として、以下の形式の json データをグリッドに送信します。

[
  { "CompanyName": "Alfreds Futterkiste", "ContactName": "Maria Anders", "ContactTitle": "Sales Representative", "Address": "Obere Str. 57", "City": "Berlin", "Country": "Germany" },
  { "CompanyName": "Ana Trujillo Emparedados y helados", "ContactName": "Ana Trujillo", "ContactTitle": "Owner", "Address": "Avda. de la Constitucin 2222", "City": "Mxico D.F.", "Country": "Mexico" }, 
  { "CompanyName": "Antonio Moreno Taquera", "ContactName": "Antonio Moreno", "ContactTitle": "Owner", "Address": "Mataderos 2312", "City": "Mxico D.F.", "Country": "Mexico" }
]   

ステップ 2: jsp のフロントエンドでグリッド行のデータが変更され、これらの変更は以下のように一時配列にプッシュされます。

// ここでグローバル配列が作成され、 // グリッドの各行で行われたデータ変更が配列に入れられます

    var tempArray = new Array();
    {
     var data = $('#jqxgridreq').jqxGrid('getrowdata', args.rowindex);
     var arr = $.makeArray(data);
     tempArray.push(data);                
    }

その後、 --> var json_string = JSON.stringify(tempArray); が続きます。ここで、データは、json 文字列を作成する際に上記で示したサンプル データと同じです。

Step3: 以下のように、変更されたデータが AJAX 呼び出しとしてサーバーに送信されます。

[
  { "CompanyName": "IOK", "ContactName": "Maria Anders", "ContactTitle": "Sales Head", "Address": "Obere Str. 57", "City": "Berlin", "Country": "Germany" },                    
  { "CompanyName": "Dubiou", "ContactName": "Ana Trujillo", "ContactTitle": "Sales Manager", "Address": "Avda. de la Constitucin 2222", "City": "Mxico D.F.", "Country": "Mexico" }                    
]

送信されたときにそれを読みたいサーバー側のコードに到達すると、次のエラーが表示されます。

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING

この問題を解決する方法を教えてください。

よろしくお願いします牧場

4

2 に答える 2

0

送信されたときにそれを読みたいサーバー側のコードに到達すると、次のエラーが表示されます。

サーバーサイドで読む前にに変換していStringますか?JSONArray

このような、

JSONArray array = new JSONArray(json_data);
于 2012-08-10T12:33:54.533 に答える
-1

Gson は、POJO でマップしたいキーを除外します。

 public class Test {
    private List<Type> attr;
     }

この attr は json {" attr " : [ { "CompanyName": "IOK", "ContactName": "Maria Anders", "ContactTitle": "Sales Head", "Address": "Obere Str . 57", "City": "Berlin", "Country": "Germany" },
{ "CompanyName": "Dubiou", "ContactName": "Ana Trujillo", "ContactTitle": "Sales Manager", "Address ": "Avda. de la Constitucin 2222", "都市": "メキシコ DF", "国": "メキシコ" }
] }

于 2012-08-10T12:53:18.553 に答える