解析构造奇怪的Json/Gson

解析构造奇怪的Json/Gson,json,gson,Json,Gson,我会保持简短,我对一些布局非常糟糕的Json有问题(从我可以告诉大家的情况来看),我正在从web服务中退出,我是java/android/Json新手,因此我们将非常感谢您的帮助,Json的结构是: {“游标”: >{“currentPageIndex”:0, >“estimatedResultCount”:32, >“页数”:{ >“标签”:1, >“开始”:0}, >“responseDetails”:空, >“responseStatus”:200},“结果”:[ >{“准确性”:2414

我会保持简短,我对一些布局非常糟糕的Json有问题(从我可以告诉大家的情况来看),我正在从web服务中退出,我是java/android/Json新手,因此我们将非常感谢您的帮助,Json的结构是:

{“游标”:
>{“currentPageIndex”:0,
>“estimatedResultCount”:32,
>“页数”:{
>“标签”:1,
>“开始”:0},
>“responseDetails”:空,
>“responseStatus”:200},“结果”:[
>{“准确性”:24140,
>“地址行”:
>{“地址1”:“门牌号”,
>“地址2”:“一条街”,
>“地址3”:“一座城市”,
>“地址4”:“一个国家”,
>“地址5”:“一个国家”,
>“邮政编码”:“123456”},
>“城市”:“一座城市”,
>“国家”:“一个国家”,
>“ddUrl”:”http://link1.com",
>“ddUrlFromHere”:http://link2.com",
>“ddUrlToHere”:http://link3.com",
>“lat”:54.52909583,
>“液化天然气”:-0.45554611,
>“电话号码”:
>{“编号”:“123456789”,
>“类型”:“工作”},
>“地区”:“中国”,
>“staticMapUrl”:http://link4.com",
>“街道地址”:“一个门牌号,一条街道,一个城市,一个州,
> 123456",
>“标题”:“阿里巴巴地毯”,
>“标题信息”:“阿里巴巴
>地毯“,
>“url”:”http://link5.com"}]}
我正在尝试使用以下方法对其进行分析:

import java.util.List;

public class ParseOffers {
    private List<results> results;

    public static class cursor {
        private int currentPageIndex;
        private int estimatedResultCount;
        private pages Pages;
        private String ResponseDetails;
        private int ResponseStatus;

        public class pages {
            private int label;
            private int start;
        }
    }

    public static class results {
        private int Accuracy;
        private addressLines AddressLines;
        private String city;
        private String country;
        private String ddUrl;
        private String ddUrlFromHere;
        private String ddUrlToHere;
        private double lat;
        private double lng;
        private phoneNumbers data;
        private String region;
        private String staticMapUrl;
        private String streetAddress;
        private String title;
        private String titleNoFormatting;
        private String url;

        public class addressLines {
            private String Address1;
            private String Address2;
            private String Address3;
            private String Address4;
            private String Address5;
            private String Postcode;
        }

        public class phoneNumbers {
            private String number;
            private String type;
        }

    }
}
import java.util.List;
公开课{
私人名单结果;
公共静态类游标{
私有int-currentPageIndex;
私有int估计结果计数;
私人网页;
私有字符串响应详细信息;
私人住宅;
公共类页面{
私有int标签;
私人int启动;
}
}
公共静态类结果{
私有整数精度;
专用地址线;
私人城市;
私人国家;
私有字符串ddUrl;
私有字符串ddUrlFromHere;
私有字符串ddUrlToHere;
私人双lat;
私人双液化天然气;
私人电话号码数据;
私有字符串区域;
私有字符串staticMapUrl;
私有字符串streetAddress;
私有字符串标题;
私有字符串标题信息;
私有字符串url;
公共类地址线{
私有字符串地址1;
私有字符串地址2;
私有字符串地址3;
私有字符串地址4;
私有字符串地址5;
私人字符串邮政编码;
}
公共类电话号码{
私有字符串编号;
私有字符串类型;
}
}
}

谢谢。

问题很简单,Java数据结构与JSON不匹配,有几种不同的方式,包括缺少游标字段,字段名与JSON元素名不匹配

下面是一个与JSON匹配的Java数据结构的最小修改版本

public class ParseOffers
{
  private cursor cursor;
  private List<results> results;

  public static class cursor
  {
    private int currentPageIndex;
    private int estimatedResultCount;
    private pages pages;
    private String responseDetails;
    private int responseStatus;

    public class pages
    {
      private int label;
      private int start;
    }
  }

  public static class results
  {
    private int accuracy;
    private addressLines addressLines;
    private String city;
    private String country;
    private String ddUrl;
    private String ddUrlFromHere;
    private String ddUrlToHere;
    private double lat;
    private double lng;
    private phoneNumbers phoneNumbers;
    private String region;
    private String staticMapUrl;
    private String streetAddress;
    private String title;
    private String titleNoFormatting;
    private String url;

    public class addressLines
    {
      private String Address1;
      private String Address2;
      private String Address3;
      private String Address4;
      private String Address5;
      private String Postcode;
    }

    public class phoneNumbers
    {
      private String number;
      private String type;
    }

  }
}
公共类
{
私有游标;
私人名单结果;
公共静态类游标
{
私有int-currentPageIndex;
私有int估计结果计数;
私人网页;
私有字符串响应详细信息;
私人住宅;
公共类页面
{
私有int标签;
私人int启动;
}
}
公共静态类结果
{
私有整数精度;
专用地址线;
私人城市;
私人国家;
私有字符串ddUrl;
私有字符串ddUrlFromHere;
私有字符串ddUrlToHere;
私人双lat;
私人双液化天然气;
私人电话号码;
私有字符串区域;
私有字符串staticMapUrl;
私有字符串streetAddress;
私有字符串标题;
私有字符串标题信息;
私有字符串url;
公共类地址线
{
私有字符串地址1;
私有字符串地址2;
私有字符串地址3;
私有字符串地址4;
私有字符串地址5;
私人字符串邮政编码;
}
公共类电话号码
{
私有字符串编号;
私有字符串类型;
}
}
}
虽然这个Java数据结构可以工作,但它仍然有一些我想改变的奇怪之处

奇怪的是,有些嵌套类是静态的,有些则不是。我会将其更改为没有任何嵌套类


奇怪的是,有些类名与字段(和JSON元素)名完全匹配。我会使用更常见的命名约定。例如,我将“cursor”类的名称更改为“cursor”。

如何解析它?手动还是使用标准库org.json包应该能够解析这种东西:@Aleks G——OP说正在使用Gson。显然是在数据绑定模式下。为此干杯。奇怪的是,嵌套类没有实际的原因,我实际上是DBA并编写了web服务(它使用.Net json库创建),但调用它的第三方要求我们以这种方式格式化它。
public class ParseOffers
{
  private cursor cursor;
  private List<results> results;

  public static class cursor
  {
    private int currentPageIndex;
    private int estimatedResultCount;
    private pages pages;
    private String responseDetails;
    private int responseStatus;

    public class pages
    {
      private int label;
      private int start;
    }
  }

  public static class results
  {
    private int accuracy;
    private addressLines addressLines;
    private String city;
    private String country;
    private String ddUrl;
    private String ddUrlFromHere;
    private String ddUrlToHere;
    private double lat;
    private double lng;
    private phoneNumbers phoneNumbers;
    private String region;
    private String staticMapUrl;
    private String streetAddress;
    private String title;
    private String titleNoFormatting;
    private String url;

    public class addressLines
    {
      private String Address1;
      private String Address2;
      private String Address3;
      private String Address4;
      private String Address5;
      private String Postcode;
    }

    public class phoneNumbers
    {
      private String number;
      private String type;
    }

  }
}