【问题标题】:Volley gson exception Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 11Volley gson 异常预期 BEGIN_OBJECT 但在第 1 行第 11 列是 BEGIN_ARRAY
【发布时间】:2013-11-15 15:04:06
【问题描述】:

我用json作为唯一的新东西
那是在使用谷歌凌空 在安卓应用上
客户端:

public void onResponse(JSONObject response) {
                        Log.i("asaf","jsone="+response.toString());
                        WorkerSeekerContiner wsc=new WorkerSeekerContiner();
                        Gson gsonConvertFrom = new Gson();

                        wsc=gsonConvertFrom.fromJson(response.toString(), WorkerSeekerContiner.class);
                        Log.i("asaf","list size="+wsc.getList().size());

服务器端:

 Gson gsonConvertTo = new Gson();
         String jsonString = gsonConvertTo.toJson(send);
         JSONObject myJsonObj;
         try {
         myJsonObj = new JSONObject(jsonString);
         out.print( myJsonObj.toString()); 

JSONObject 响应的字符串:(保存正确的数据)

    {
"list":[
[251,"t1","t1","Nov 7, 2018",31.483521,34.596634,9000,"Nov 10, 
 2013","yardwork","a"]
,[252,"t1","t1","Nov 7, 
 2018",31.483521,34.696634,9000,"Nov 10, 2013","yardwork","a"]
]
}

但是当我尝试 gsonConvertFrom.fromJson 时它会抛出异常:

wsc=gsonConvertFrom.fromJson(response.toString(), WorkerSeekerContiner.class);

       11-15 16:50:52.792: E/AndroidRuntime(17804): com.google.gson.JsonSyntaxException: java.lang.IllegalStateException:
 Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 11
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:180)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:81)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:60)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:176)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at com.google.gson.Gson.fromJson(Gson.java:755)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at com.google.gson.Gson.fromJson(Gson.java:721)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at com.google.gson.Gson.fromJson(Gson.java:670)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at com.google.gson.Gson.fromJson(Gson.java:642)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at asaf.findwork.linkup$1.onResponse(linkup.java:131)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at asaf.findwork.linkup$1.onResponse(linkup.java:1)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:65)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at android.os.Handler.handleCallback(Handler.java:615)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at android.os.Handler.dispatchMessage(Handler.java:92)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at android.os.Looper.loop(Looper.java:153)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at android.app.ActivityThread.main(ActivityThread.java:5037)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at java.lang.reflect.Method.invokeNative(Native Method)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at java.lang.reflect.Method.invoke(Method.java:511)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at dalvik.system.NativeStart.main(Native Method)
    11-15 16:50:52.792: E/AndroidRuntime(17804): Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 11
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at com.google.gson.stream.JsonReader.expect(JsonReader.java:339)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:322)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:168)
    11-15 16:50:52.792: E/AndroidRuntime(17804):    ... 22 more

最后我的对象只包含一个对象列表:

public class WorkerSeekerContiner {
    List<WorkerSeeker> list;

Workerseeker 类:

@Entity
public class WorkerSeeker implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    @Temporal(javax.persistence.TemporalType.DATE)
    private Calendar startdate;
    @Temporal(javax.persistence.TemporalType.DATE)
    private Calendar enddate;
    private Double offerprice;
    private Double  latitude;
    private Double longitude;
    private String address;
    private String userName;
    private String type;
    private String description;

该死的 :((
问题是在使用(List)q3.getResultList()时使用createNativeQuery;给了我一个对象列表而不是 WorkerSeeker 的列表 errrrrrrrrrrrrrrrrrrrr
如果有人遇到这个问题,修复真的很简单,只需添加
createNativeQuery (sqlqury,urclass.class);将返回 urclass 数组而不是对象

【问题讨论】:

  • 请分享您的 WorkerSeeker 课程
  • 好的(服务器端,客户端与没有实体的相同),我用 stringtokenizer 解决了这个问题,只是从每个字符串构建我的对象仍然很想知道为什么会这样不工作;/

标签: json android-volley


【解决方案1】:

createNativeQuery 将返回 Query.getResultList() 上的对象列表;不是求职者名单
我是个白痴;/

【讨论】:

  • 请详细解释你的答案。
猜你喜欢
  • 2017-08-26
  • 1970-01-01
  • 2023-03-08
  • 2016-07-05
  • 1970-01-01
  • 2017-12-03
  • 1970-01-01
  • 2020-01-06
相关资源
最近更新 更多