Анализировать данные JSON с помощью класса-оболочки, где имя объекта / ключа String является числовым - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь проанализировать специальные данные JSON с помощью класса Wrapper. Специальный означает JSON, в котором числовые ключи представлены в виде строки, как показано ниже:

{
"date":"2018-11-01",
"hours":"01-Nov 08:00",
"1011":"837.7500",
"1022":"99.92596979567664",
"1010":"3.198083",
"1021":"5",
"1019":"1171.000",
"1018":"3.578371",
"1017":"30.46989",
"1016":"0.0001931423",
"1015":"6749",
"1014":"0.161805",
"1013":"0.001678397",
"1012":"1.406077"
}

Я знаю, как анализировать данные JSON с помощью класса-оболочки, но этоcase является особым, потому что имя объекта класса-оболочки не принимает числовое значение как String.

Класс Wrapper / POJO

enter image description here

Я не хочу разбирать объект на основе JSON.У кого-нибудь есть идеи?

Ответы [ 3 ]

0 голосов
/ 07 декабря 2018

Попробуйте Gson для создания класса-оболочки

http://www.jsonschema2pojo.org/

public class Example {
 @SerializedName("date")
    @Expose
    private String date;
    @SerializedName("hours")
    @Expose
    private String hours;
    @SerializedName("1011")
    @Expose
    private String _1011;
    @SerializedName("1022")
    @Expose
    private String _1022;

    public String getDate() {
    return date;
    }

    public void setDate(String date) {
    this.date = date;
    }

    public String getHours() {
    return hours;
    }

    public void setHours(String hours) {
    this.hours = hours;
    }

    public String get1011() {
    return _1011;
    }

    public void set1011(String _1011) {
    this._1011 = _1011;
    }

    public String get1022() {
    return _1022;
    }

    public void set1022(String _1022) {
    this._1022 = _1022;
    }
0 голосов
/ 07 декабря 2018

Библиотека Gson имеет функциональность SerializedName, в которой она анализирует соответствующее значение ключа, определенного в параметре SerializeName.Все будет сложнее, если ваш ключ является чистым целым числом, поскольку Java запрещает его использование в качестве имени переменной, в этом случае SerializeName избавит вас от этой головной боли и сделает ваш код более понятным.

Пример использования:

@SerializedName("1011") double lat;
@SerializedName("1022") double lng;
0 голосов
/ 07 декабря 2018

Посмотрите на этот код, надеюсь, он вам подходит

JSONObject jsonObjectData = jsonObject1.getJSONObject("yourObject");
                        Iterator iterator = jsonObjectData.keys();
                        while (iterator.hasNext()) {
                            YourClass yourClass = new YourClass();
                            String key = (String) iterator.next();
                            yourClass.setKey(key);
                            yourClass.setVajue(jsonObjectData.getString(key));


                            yourList.add(yourClass);
                        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...