Java-модель для массивов вложенных объектов Json - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь выяснить, как создать класс (ы) модели для синтаксического анализа данных Json из API Alpha Vantage, но не смог определить формат для класса модели.

Это форматJson:

 {
  "Meta Data": {
    "1. Information": "Daily Time Series with Splits and Dividend Events",
    "2. Symbol": "FCHI",
    "3. Last Refreshed": "2015-08-21",
    "4. Output Size": "Full size",
    "5. Time Zone": "US/Eastern"
  },
  "Time Series (Daily)": {
    "2015-08-21": {
      "1. open": "47.4100",
      "2. high": "47.9100",
      "3. low": "47.4100",
      "4. close": "47.9100",
      "5. adjusted close": "47.9100",
      "6. volume": "5148",
      "7. dividend amount": "0.0000",
      "8. split coefficient": "1.0000"
    },
    "2015-08-20": {
      "1. open": "47.9000",
      "2. high": "47.9000",
      "3. low": "47.0600",
      "4. close": "47.2900",
      "5. adjusted close": "47.2900",
      "6. volume": "661",
      "7. dividend amount": "0.0000",
      "8. split coefficient": "1.0000"
    }
  }
}

или в графической форме:

enter image description here

Метаданные, очевидно, представляют собой объект, состоящий из строк:

String Information;
String Symbol;
String LastRefreshed;
String OutputSize;
String Time Zone;

Но когда я получаю временные ряды (ежедневно), я застреваю.Вот вопросы, которые я не смог решить:

  1. Объект «Временной ряд (ежедневно)», в зависимости от функции название изменится на Временной ряд (ежемесячно) или ВремяСерия (внутри дня) и т. Д.Нужно ли создавать новую модель для каждой из них?
  2. При дальнейшем углублении в «Временные ряды (ежедневно)» у вас есть то, что по сути является массивом объектов для временных отметок, но когда я смотрю документацию, это говорит скобкиуказать объект.Как бы вы сослались на это?
  3. Я думал, что для ссылки на объекты времени можно получить объект Time Series (Daily) и выполнить итерацию по нему, чтобы получить отдельные объекты меток времени, но я не знаюкак бы вы создали модель для этого из-за разной отметки времени для каждого.Например, модель будет иметь значения открытия, максимума, минимума, закрытия, скорректированного закрытия, объема, суммы дивидендов, коэффициентов разделения, но тогда куда вписывается временная метка?

Надеюсь, это имеет смысл,Я пытался сделать это как можно более ясным, но я понимаю, что не очень хорошо объяснил.

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 04 марта 2019

Если бы вы могли настроить свой ответ JSON, чтобы он соответствовал приведенному ниже, вы могли бы легко реализовать функцию, которую вы пытаетесь


   {
  "Meta Data": {
    "1. Information": "Daily Time Series with Splits and Dividend Events",
    "2. Symbol": "FCHI",
    "3. Last Refreshed": "2015-08-21",
    "4. Output Size": "Full size",
    "5. Time Zone": "US/Eastern"
  },
  "Time Series (Daily)": [
    {
      "1. open": "47.4100",
      "2. high": "47.9100",
      "3. low": "47.4100",
      "4. close": "47.9100",
      "5. adjusted close": "47.9100",
      "6. volume": "5148",
      "7. dividend amount": "0.0000",
      "8. split coefficient": "1.0000",
      "time_stamp": "2015-08-21"
    },
    {
      "1. open": "47.9000",
      "2. high": "47.9000",
      "3. low": "47.0600",
      "4. close": "47.2900",
      "5. adjusted close": "47.2900",
      "6. volume": "661",
      "7. dividend amount": "0.0000",
      "8. split coefficient": "1.0000",
      "time_stamp": "2015-08-20"
    }
  ]
}

Основной POJO

package com.example;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Example {

private Meta_Data meta_Data;
private List<Time_Series__Daily_> time_Series__Daily_ = null;
private Map<String, Object> additionalProperties = new HashMap<String, Object>();

public Meta_Data getMeta_Data() {
return meta_Data;
}

public void setMeta_Data(Meta_Data meta_Data) {
this.meta_Data = meta_Data;
}

public List<Time_Series__Daily_> getTime_Series__Daily_() {
return time_Series__Daily_;
}

public void setTime_Series__Daily_(List<Time_Series__Daily_> time_Series__Daily_) {
this.time_Series__Daily_ = time_Series__Daily_;
}

public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}

public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}

}

Класс MetaData


package com.example;

import java.util.HashMap;
import java.util.Map;

public class Meta_Data {

private String _1__Information;
private String _2__Symbol;
private String _3__Last_Refreshed;
private String _4__Output_Size;
private String _5__Time_Zone;
private Map<String, Object> additionalProperties = new HashMap<String, Object>();

public String get1__Information() {
return _1__Information;
}

public void set1__Information(String _1__Information) {
this._1__Information = _1__Information;
}

public String get2__Symbol() {
return _2__Symbol;
}

public void set2__Symbol(String _2__Symbol) {
this._2__Symbol = _2__Symbol;
}

public String get3__Last_Refreshed() {
return _3__Last_Refreshed;
}

public void set3__Last_Refreshed(String _3__Last_Refreshed) {
this._3__Last_Refreshed = _3__Last_Refreshed;
}

public String get4__Output_Size() {
return _4__Output_Size;
}

public void set4__Output_Size(String _4__Output_Size) {
this._4__Output_Size = _4__Output_Size;
}

public String get5__Time_Zone() {
return _5__Time_Zone;
}

public void set5__Time_Zone(String _5__Time_Zone) {
this._5__Time_Zone = _5__Time_Zone;
}

public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}

public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}

}

Класс Time_Series_Daily


package com.example;

import java.util.HashMap;
import java.util.Map;

public class Time_Series__Daily_ {

private String _1__open;
private String _2__high;
private String _3__low;
private String _4__close;
private String _5__adjusted_close;
private String _6__volume;
private String _7__dividend_amount;
private String _8__split_coefficient;
private String time_stamp;
private Map<String, Object> additionalProperties = new HashMap<String, Object>();

public String get1__open() {
return _1__open;
}

public void set1__open(String _1__open) {
this._1__open = _1__open;
}

public String get2__high() {
return _2__high;
}

public void set2__high(String _2__high) {
this._2__high = _2__high;
}

public String get3__low() {
return _3__low;
}

public void set3__low(String _3__low) {
this._3__low = _3__low;
}

public String get4__close() {
return _4__close;
}

public void set4__close(String _4__close) {
this._4__close = _4__close;
}

public String get5__adjusted_close() {
return _5__adjusted_close;
}

public void set5__adjusted_close(String _5__adjusted_close) {
this._5__adjusted_close = _5__adjusted_close;
}

public String get6__volume() {
return _6__volume;
}

public void set6__volume(String _6__volume) {
this._6__volume = _6__volume;
}

public String get7__dividend_amount() {
return _7__dividend_amount;
}

public void set7__dividend_amount(String _7__dividend_amount) {
this._7__dividend_amount = _7__dividend_amount;
}

public String get8__split_coefficient() {
return _8__split_coefficient;
}

public void set8__split_coefficient(String _8__split_coefficient) {
this._8__split_coefficient = _8__split_coefficient;
}

public String getTime_stamp() {
return time_stamp;
}

public void setTime_stamp(String time_stamp) {
this.time_stamp = time_stamp;
}

public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}

public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}

}

Я использовал этот веб-сайт для преобразования JSON в POJO онлайн.Отличный инструмент.Экономия времени.Я хотел бы помочь.

...