com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期BEGIN_ARRAY但是STRING

时间:2012-08-10 12:20:35

标签: jquery ajax json gson

我目前正在使用Gson和JQWidgets。

步骤1:使用gson使用其api将以下格式的json数据发送到网格,作为JQWidgets支持的行。

[
  { "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字符串时上面显示的示例数据相同。

步骤3:更改的数据作为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

请帮助并建议如何解决这个问题。

谢谢和问候 Ranchs

2 个答案:

答案 0 :(得分:0)

  

它到达服务器端代码,我希望在发送时读取它   我得到以下错误:

在阅读服务器端之前,您是否正在将String转换为JSONArray

像这样,

JSONArray array = new JSONArray(json_data);

答案 1 :(得分:-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”: “德国”},
  {“CompanyName”:“Dubiou”,“ContactName”:“Ana Trujillo”,“ContactTitle”:“销售经理”,“地址”:“Avda.de la Constitucin 2222”,“City”:“Mxico DF”,“国家“:”墨西哥“}
]}