1

请我有一个这样的json响应字符串:

{"result":{"id":21456,"name":"3mm nail","type":"2" }}

这是我的代码:

class rootObj{
    List<Result> result;

}
public class Result {
    @SerializedName("id")
    public String idItem;

    @SerializedName("name")
    public String name;    
}
public static void main(String[] args) throws Exception {
Gson gson = new Gson();
Result result = gson.fromJson(json,Result.class);
System.out.println(result.name);
}

但结果是空的 :( 提前谢谢。

所以..这段代码是我的目标:

class ResultData{

    private Result result;
    public class Result {
        private String id;
        private String name;

    }

}


...
Gson gson = new Gson();
ResultData resultData = new Gson().fromJson(json, ResultData.class);

System.out.println(resultData.result.id);
System.out.println(resultData.result.name);

感谢 BalusC 给了我这个想法。 Java - 嵌套在嵌套中的 Gson 解析

4

2 回答 2

2

在您的 JSON 字符串中,您的结果属性是一个对象而不是一个数组。因此,要使其与您的两个 Java 类(rootObj 和 Result)一起使用,您需要在 {braces} Original 周围添加 [brackets]

{"result":{"id":21456,"name":"3mm nail","type":"2" }}

新的

{"result":[{"id":21456,"name":"3mm nail","type":"2" }]}

这段代码对我有用:

import static org.junit.Assert.assertEquals;

import java.util.List;

import org.junit.Test;

import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;

public class TestGson {
    private static final String NAME = "3mm nail";

    @Test
    public void testList() {
        final String json = "{\"result\":[{\"id\":21456,\"name\":\"" + NAME + "\",\"type\":\"2\" }]}";
        Gson gson = new Gson();
        ListWrapper wrapper = gson.fromJson(json, ListWrapper.class);
        assertEquals(NAME, wrapper.result.get(0).name);
    }

    static class ListWrapper {
        List<Result> result;
    }

    static class ObjectWrapper {
        Result result;
    }

    static class Result {
        @SerializedName("id")
        public int idItem;

        @SerializedName("name")
        public String name;
    }

}
于 2013-03-29T12:34:33.533 回答
0

参考这个..它解释了如何在json不使用的情况下 解析GSON

于 2013-03-29T12:41:41.163 回答