当前位置: 首页 > 面试题库 >

Gson调用返回多个类的空对象

巫马化
2023-03-14
问题内容

我正在尝试序列化以序列化下面包含的json字符串。

 {
        "mood": {
            "is_featured": true,
            "description": null,
            "title": "2014 ",
            "ordering": null,
            "is_recently_modified": true,
            "is_test": false,
            "tracks": [

            {
                "album": {
                    "release_date": "2014-11-06",
                    "id": 359778,
                    "name": "Amansız Gücenik"
                },
                "name": "Hırpalandı Mayıs",
                "artist": {
                    "id": 491169,
                    "name": "Ceylan Ertem"
                },
                "duration": 227,
                "isrc": "TRA161400207",
                "id": 3903997
            },
            {
                "album": {
                    "release_date": "2013-08-05",
                    "id": 329129,
                    "name": "For Fuld Musik - 25 Danske Sommer Pop & Rock Hits Vol. 2"
                },
                "name": "Am I Wrong",
                "artist": {
                    "id": 755957,
                    "name": "Nico & Vinz"
                },
                "duration": 387,
                "isrc": "NO2G31301011",
                "id": 3655085
            }
        ],
        "image_url": "some_url",
        "is_recently_created": true,
        "id": 128
    }
}

我正在使用此gson调用对其进行序列化

Mood mood = new Gson().fromJson(result, Mood.class);

我的班主任就是这样。

public class Mood {

    private boolean is_featured;
    private boolean is_recently_modified;
    private boolean is_recently_created;
    private boolean is_test;


    private String  description;
    private String  title;
    private String  image_url;

    private int     id;
    private int     ordering;

    private Track[] tracks;



    public static class MoodContainer {
        public Mood[] moods;
    }


}


public class Track {

    //variables
    private Album       album;
    private Artist      artist;
    private Provider    provider;


    private String      secure_url;
    private String      name;
    private String      region;
    private String      isrc;

    private int         duration;
    private int         track_order;
    private int         id;

}

对于任何其他类变量,它都是这样。当我尝试使用上述调用时,最终会得到具有所有空值的对象。要注意的一件事是json字符串中未提供某些字段,因为不同的api调用提供了这些json字符串的不同部分。我做错了什么?


问题答案:

您提供的JSON根对象具有属性mood-因此,您有两个选项可以使反序列化正常工作:

  1. Mood类包装在另一个对象中,如下所示:

public class MoodWrapper { private Mood mood; }

并将反序列化代码更改为

MoodWrapper moodWrapper = new Gson().fromJson(result, MoodWrapper.class);

  1. 反序列化时跳过根对象:
    final Gson gson = new Gson();
    

    JsonParser parser = new JsonParser();
    JsonObject rootObj = parser.parse(json).getAsJsonObject();
    Mood mood = gson.fromJson(rootObj.getAsJsonObject(“mood”), Mood.class);



 类似资料:
  • 这是我的代码: 以下是我的ModelClass: 地址.java 我尝试了几个组合,但没有一个能告诉我地址。虽然我的应用程序的前一个版本上的相同代码运行良好。旧版本应用程序中返回的地址为: 地址[addressLines=[0:"俄亥俄,美国"],功能=俄亥俄,admin=俄亥俄,sub-admin=null,locality=null,通途=null,postalCode=null,国家代码=美

  • 我用的是parse.com。每个包里面都有很多钻子,每个品类里面都有很多包。 我卡住了。然后(函数(result,result2,result3)在最后一行。promise可以有多个promise,它是可变的。有没有一种方法可以写出如下内容: 谢谢!

  • 我正在尝试修改一些嵌入在Java中的Javascript代码,以将多个值返回给调用Java代码。 Java代码(调用Javascript): Javascript代码(由Java调用): 我希望返回多个值。 我尝试修改Javascript以返回HashMap,如下所示: 但是当我在Java端进行强制转换时,我得到了一个ClassCastException: 结果: 我不喜欢在HashMap中返回它

  • 问题内容: 我有一个文件夹,其中包含index.js和几个模型(类)index.js book.js author.js 问题在于Author类似乎找不到书!它只是一个空对象。但是,如果我在index.js中切换导出,则将Book放在Author之后- 可以,但是其他模型将停止工作。 我不想做任何骇客工作。 问题答案: 这是因为您具有循环依赖关系。Node.js以非常特定的方式处理此问题: 第一个

  • 实际上,我试图在我的代码中实现如此基本的东西。我有一个json文件。然后我想读取这个json文件并将其转换为Java对象。为了处理它,我使用了gson,但不知何故,它为嵌套对象返回null。 JSON: TestJSON: 最后,我尝试从json文件中读取它: 但是最后,当我试图到达时,它给出了null。有什么建议吗?

  • 我对REST编程很陌生。 下面是我的类,它打算返回XML/JSON,但我很难让它返回正确的值。我尝试返回我的POJO类的Response、JsonArray和Object,但没有成功。我看了好几条线索,但都搞不清到底是什么问题。 资源类: POJO类: 这是我返回响应或朋友对象时得到的: 当返回< code>JsonArray时,我得到的是: 我面临的另一个问题是:如果我创建一个构造函数,我得到以