Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.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上使用Gson实现JSON中的“点播”_Java_Android_Json_Gson - Fatal编程技术网

Java 在Android上使用Gson实现JSON中的“点播”

Java 在Android上使用Gson实现JSON中的“点播”,java,android,json,gson,Java,Android,Json,Gson,我试图在Android中使用Gson解析JSON提要。我知道JSON是有效的。我怀疑是因为格式如下: "Info":[ { "Id":"", "Name":"", "Description":"", "Date":"" } 为了分析这个,我需要点进去。例:信息。姓名 如何在序列化DTO中执行此操作 @SerializedName("Name") public String name; @SerializedName("Description") public String desc;

我试图在Android中使用Gson解析JSON提要。我知道JSON是有效的。我怀疑是因为格式如下:

 "Info":[
 {

"Id":"",
"Name":"",
"Description":"",
"Date":""
 }
为了分析这个,我需要点进去。例:信息。姓名

如何在序列化DTO中执行此操作

@SerializedName("Name")
public String name;

@SerializedName("Description")
public String desc;

@SerializedName("Date")
public String date;
我试着输入信息。在每个序列化名称前面,但这也不起作用。我还知道我的JSON解析方法工作正常,因为它在其他地方使用不同的DTO。但在解析过程中,我不必考虑点滴问题

有人能帮忙吗

编辑:我已经尝试了你们发布的所有东西,但没有任何效果。错误显示:

The JsonDeserializer failed to deserialize json object {"Info":[{".......
第二次编辑:
我能够消除错误,但现在它返回null。哈哈,现在真他妈的很沮丧

由于[],Info对象是一个列表。必须使用以下代码对其进行反序列化:

编辑:


然后使用数据类来反序列化json。

我假设您输入的实际json有效,因为您提供的示例无效。在JSON示例中,您有Info:[但是没有包含Info属性的外部对象,这是必须的。有效的JSON应该是:

{
 "Info": [
           {
             "Id":"",
             "Name":"",
             "Description":"",
             "Date":"",
           }
         ]
}
这是一个JSON对象,其属性信息的值为对象列表。此对象列表包含一个具有属性Id、名称、描述和日期的对象,所有这些属性都具有空字符串值

下面是一个关于如何使用GSON解析JSON提要(如上面的JSON)的快速教程:

您将需要一个类来表示列表中的项目:

public class InfoItem {
     public String Id;
     public String Name;
     public String Description;
     public String Date;
     public InfoItem() {}
}
一个代表项目列表:

public class InfoItemList extends LinkedList<InfoItem> {
    public InfoItemList() { super() };
}
然后就是:

gson.fromJson(jsonString, InfoMessage.getClass());
如果只是反序列化集合:

Type listType = new TypeToken<List<InfoItem>>() {}.getType();
gson.fromJson(jsonString2, listType);

你想把你的json代码放到java对象中并访问成员吗?我被你的问题弄糊涂了。是的,这是正确的。它可以与我在我的应用程序中的其他json解析一起工作,但不是当我必须点进去从json feedok获取值时。考虑到这一点,我说的可能是错误的,我必须验证它。是的,json是有效的,只是不想粘贴整个内容。我将尝试此操作并返回报告。@Raijv M.InfoItemList类是否应该扩展集合?它要求我更改为集合或创建类集合?@Magnus抱歉,不应该是集合,因为这是抽象的。我将其更改为扩展LinkedList,因为这是具体的.让我知道这对你是否有效。@Magnus这个解决方案有什么好处吗?
gson.fromJson(jsonString, InfoMessage.getClass());
Type listType = new TypeToken<List<InfoItem>>() {}.getType();
gson.fromJson(jsonString2, listType);