gpt4 book ai didi

java - 这个JSON的数据结构是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:55:45 24 4
gpt4 key购买 nike

我正在尝试使用 Gson 将 Json 解析为 Java,但是当我使用 fromJson() 时,我总是得到 null。谁能给我解释一下这个数据结构?谢谢!

{
"d": {
"results": [
{
"__metadata": {
"uri": "https://api.datamarket.azure.com/Data.ashx/Bing/SearchWeb/v1/Web?Query='bill'gates'&$skip=0&$top=1",
"type": "WebResult"
},
"ID": "9bd0942f-fe5b-44fc-8343-ef85e5b93a7e",
"Title": "The Official Site of Bill Gates - The Gates Notes",
"Description": "In the space between business and goverment, even a small investment can make a big impact on the lives of those in need.",
"DisplayUrl": "www.thegatesnotes.com",
"Url": "http://www.thegatesnotes.com/"
},
{
"__metadata": {
"uri": "https://api.datamarket.azure.com/Data.ashx/Bing/SearchWeb/v1/Web?Query='bill'gates'&$skip=1&$top=1",
"type": "WebResult"
},
"ID": "fdf0d3b9-b29f-43ef-b5ba-6bb4b1b04458",
"Title": "Bill Gates - Wikipedia, the free encyclopedia",
"Description": "William Henry \"Bill\" Gates III (born October 28, 1955) is an American business magnate and philanthropist. Gates is the former chief executive and current chairman of ...",
"DisplayUrl": "en.wikipedia.org/wiki/Bill_Gates",
"Url": "http://en.wikipedia.org/wiki/Bill_Gates"
}
],
"__next": "https://api.datamarket.azure.com/Data.ashx/Bing/SearchWeb/v1/Web?Query='bill'gates'&$skip=10&$top=10"
}

我觉得数据结构应该是这样的,但是不行

public class d {
public result[] results;
public String __next;}

public class result {
public information[] infolist;}

public class information {
public __metadata metadata;
public String ID;
public String Title;
public String Description;
public String DisplayUrl;
public String Url;}

public class __metadata {
public String uri;
public String type;}

最佳答案

你的 Information类(Class)是问题。把 Information塞进Result并删除 infolist来自 Result .此外,元数据的字段名称是 __metadata .这不是类(class)名称。最后,您缺少一个包装类 d作为一个字段。

public class DataContainer {
public Data d;
}

public class Data {
public Result[] results;
public String __next;
}

public class Result {
public Metadata __metadata;
public String ID;
public String Title;
public String Description;
public String DisplayUrl;
public String Url;
}

public class Metadata {
public String uri;
public String type;
}

您确实应该对类名使用通用约定。 Gson 不会阻止您使用自己的类名。它只需要控制字段的名称。

反序列化:

String json = ... ;
DataContainer myDataContainer = new Gson().fromJson(JSONString , DataContainer.class);
Result[] myResult = myDataContainer.d.results;

尝试一下,看看是否有效。

以下是在为 Gson 编写类结构时应该如何解释 JSON:

  • 一个开口 {指示一个对象,因此这将是一个新类(如果它们具有相同的字段,则为现有类)
  • A "this":指示其所在对象的字段,该字段的名称必须与字符串中的文本相同。
  • 一个开口 [表示一个数组,一个List , 或 Set ( Result[] results 可以很容易地成为 List<Result> results )

关于java - 这个JSON的数据结构是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12630054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com