Парсинг Gson с ключами Dynami c json - PullRequest
0 голосов
/ 08 мая 2020

Я просмотрел несколько сообщений о разборе ключей Dynami c. Но все еще сбивает с толку анализ ниже JSON с использованием Gson , который является новым ответом в моем существующем проекте.

{
    "position":0,
    “source”:[“Win","Web","Capture","iOS","Camera","Back"],
    “source_data”:{
        "Web”:{“years”:[{“start”:1500,"end”:1700}]},
        "Win":{"years":[{"start”:1700,"end”:2000}]},
        "iOS":{"years":[{"start”:1700,"end”:2200}]},
        "Back":{"years":[{"start”:2100,"end”:2300}]},               
        "Camera":{"years":[{"start”:2200,"end":2200},{"start”:2200,"end”:2600},{"start”:2300,"end”:2600}]},
        "Capture":{"years":[{"start”:1700,"end”:2100}]}
    }
}

У меня уже есть Json Parsing настройка с использованием библиотеки Gson. ниже приведен фрагмент кода, который я использую для синтаксического анализа. но исходные_данные значение ключа не сохраняется в моем классе модели

@Expose
@SerializedName("source_data")
private SourceData mSourceData;


public class SourceData {

    HashMap<String, SourceYears> mSourceYears;

    public HashMap<String, SourceYears> getSourceYears() {
        return mSourceYears;
    }

    public void setSourceYears(HashMap<String, SourceYears> years) {
        this.mSourceYears = years;
    }
}

public class SourceYears {
    @Expose
    @SerializedName("years")
    private List<Years> mYears;

    public List<Years> getYears() {
        return mYears;
    }

    public void setYears(List<Years> years) {
        this.mYears = years;
    }
}

здесь Years - это класс, содержащий ключи start и end.

предложите, пожалуйста, если кто-то определил, что я делаю неправильно.

1 Ответ

1 голос
/ 08 мая 2020

Пожалуйста, попробуйте использовать это, у меня есть усовершенствованные модели на основе json, предоставленного вами, а также json, который вы предоставили, не точен из-за неправильных двойных кавычек. *

class YearWrapper {
        List<YearObject> years;

        public List<YearObject> getYears() {
            return years;
        }

        public void setYears(List<YearObject> years) {
            this.years = years;
        }

        @Override
        public String toString() {
            return "YearWrapper{" +
                    "years=" + years +
                    '}';
        }
    }

    class YearObject {
        int start;
        int end;

        public int getStart() {
            return start;
        }

        public void setStart(int start) {
            this.start = start;
        }

        public int getEnd() {
            return end;
        }

        public void setEnd(int end) {
            this.end = end;
        }

        @Override
        public String toString() {
            return "YearObject{" +
                    "start=" + start +
                    ", end=" + end +
                    '}';
        }
    }

    class KeyValueMapModel {
        int position;
        List<String> source;
        @SerializedName("source_data")
        Map<String, YearObject> sourceData;

        public int getPosition() {
            return position;
        }

        public void setPosition(int position) {
            this.position = position;
        }

        public List<String> getSource() {
            return source;
        }

        public void setSource(List<String> source) {
            this.source = source;
        }

        public Map<String, YearObject> getSourceData() {
            return sourceData;
        }

        public void setSourceData(Map<String, YearObject> sourceData) {
            this.sourceData = sourceData;
        }

        @Override
        public String toString() {
            return "KeyValueMapModel{" +
                    "position=" + position +
                    ", source=" + source +
                    ", sourceData=" + sourceData +
                    '}';
        }
    }

Вот как я его вызываю:

Gson gson = new Gson();
KeyValueMapModel keyValueMapModel = gson.fromJson(yourJsonString, KeyValueMapModel.class);
System.out.println(keyValueMapModel);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...