Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android moshi将Json解析为对象_Java_Android_Json - Fatal编程技术网

Java android moshi将Json解析为对象

Java android moshi将Json解析为对象,java,android,json,Java,Android,Json,我使用moshi将JSon解析为对象。这是我的JSon: [{ "id": 4, "phone": { "id": 3, "imei": "356938035643801", "description": "Marek Kowalski" }, "user": { "id": 3, "username": "marek.kowalski", "first_name": "Marek",

我使用moshi将JSon解析为对象。这是我的JSon:

[{
   "id": 4,
   "phone":    {
      "id": 3,
      "imei": "356938035643801",
      "description": "Marek Kowalski"
   },
   "user":    {
      "id": 3,
      "username": "marek.kowalski",
      "first_name": "Marek",
      "last_name": "Kowalski"
   },
   "user_id": 3,
   "message": "Podejrzane zachowanie, sprawdĹş.",
   "date_time_data": "2017-09-05T22:26:44.916927Z",
   "longitude": 19.934113,
   "latitude": 50.075086,
   "confirm": 0,
   "changetime": "2017-09-05T22:26:44.930357Z",
   "has_coordinates": 1
}]
这是我的目标:

public class Message {

    String message;
    double longitude;
    double latitude;
    int confirm;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public double getLongitude() {
        return longitude;
    }

    public void setLongitude(double longitude) {
        this.longitude = longitude;
    }

    public double getLatitude() {
        return latitude;
    }

    public void setLatitude(double latitude) {
        this.latitude = latitude;
    }

    public int getConfirm() {
        return confirm;
    }

    public void setConfirm(int confirm) {
        this.confirm = confirm;
    }
}
我这样做是为了将JSON解析为obecjt:

 Message message = App.getMsg().fromJson(new String(responseBody, "UTF-8"));
但我的应用程序崩溃了,在日志中我看到:

检测到用户空间异常! com.squareup.moshi.JsonDataException:应为BEGIN_对象,但为 在路径处开始数组$ 位于com.squareup.moshi.BufferedSourceJsonReader.beginObject(BufferedSourceJsonReader.java:171) 位于com.squareup.moshi.ClassJsonAdapter.fromJson(ClassJsonAdapter.java:145) 位于com.squareup.moshi.JsonAdapter$1.fromJson(JsonAdapter.java:68) 位于com.squareup.moshi.JsonAdapter.fromJson(JsonAdapter.java:33) 位于com.squareup.moshi.JsonAdapter.fromJson(JsonAdapter.java:37) 在jaceknikiel.apk.MsgActivity$1.onSuccess(MsgActivity.java:37) 位于com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseHandler.java:351) 在com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(AsyncHttpResponseHandler.java:510)上 位于android.os.Handler.dispatchMessage(Handler.java:102) 位于android.os.Looper.loop(Looper.java:154) 位于android.app.ActivityThread.main(ActivityThread.java:6692) 位于java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)上 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)


问题是,您请求的是一个
消息
对象,但实际上您有一个数组
消息
对象。尝试这样做:

String jsonResponseBody = ...;
Type type = Types.newParameterizedType(List.class, Message.class);
JsonAdapter<List<Message>> adapter = moshi.adapter(type);
List<Message> messages = adapter.fromJson(jsonResponseBody);
字符串jsonResponseBody=。。。;
Type Type=Types.newParameteredType(List.class,Message.class);
JsonAdapter adapter=moshi.adapter(类型);
List messages=adapter.fromJson(jsonResponseBody);

问题在于,您请求的是一个
消息
对象,但实际上您有一个数组
消息
对象。尝试这样做:

String jsonResponseBody = ...;
Type type = Types.newParameterizedType(List.class, Message.class);
JsonAdapter<List<Message>> adapter = moshi.adapter(type);
List<Message> messages = adapter.fromJson(jsonResponseBody);
字符串jsonResponseBody=。。。;
Type Type=Types.newParameteredType(List.class,Message.class);
JsonAdapter adapter=moshi.adapter(类型);
List messages=adapter.fromJson(jsonResponseBody);
列出消息
而不是
消息
,因为您有对象数组
列出消息
而不是
消息
,因为您有对象数组