Как разобрать json такого вида:
{
"firstName": "login",
"contractData": [
{
"contract": "10000555555",
"contractDate": "28.03.2018"
}
]
}
запрос pojo щас выглядит так
класс Example
@SerializedName("firstName")
@Expose
public String firstName;
@SerializedName("contractData")
@Expose
public List<ContractDatum> contractData = new ArrayList<ContractDatum>();
public Example withFirstName(String firstName) {
this.firstName = firstName;
return this;
}
public Example withContractData(List<ContractDatum> contractData) {
this.contractData = contractData;
return this;
}
}
класс ContractDatum
public class ContractDatum {
@SerializedName("contract")
@Expose
public String contract;
@SerializedName("contractDate")
@Expose
public String contractDate;
public ContractDatum withContract(String contract) {
this.contract = contract;
return this;
}
public ContractDatum withContractDate(String contractDate) {
this.contractDate = contractDate;
return this;
}
}
для получения firstName вызываю так
textView.append(example.firstName + "\n");
не понимаю как получить данные по ключам из contractData
Все просто... Использую Gson, lombok, зависимости для градла прилагаю:
compile group: 'com.google.code.gson', name: 'gson', version: '2.8.6' compileOnly 'org.projectlombok:lombok:1.18.10' annotationProcessor 'org.projectlombok:lombok:1.18.10'
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.time.LocalDate;
public class Main {
private final static Gson GSON = new GsonBuilder()
.registerTypeAdapter(LocalDate.class, new LocalDateAdapter())
.create();
public static void main(String[] args) {
String json = "{\n" +
" \"firstName\": \"login\",\n" +
" \"contractData\": [\n" +
" {\n" +
" \"contract\": \"10000555555\",\n" +
" \"contractDate\": \"28.03.2018\"\n" +
" }\n" +
" ]\n" +
"} ";
JsonData fromJson = GSON.fromJson(json, JsonData.class);
System.out.println(fromJson);
//System.out.println(Long.valueOf(fromJson.getContractData()[0].getContract()));
//System.out.println(fromJson.getContractData()[0].getContractDate());
}
}
import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class LocalDateAdapter extends TypeAdapter<LocalDate> {
@Override
public void write(final JsonWriter jsonWriter, final LocalDate localDate) throws IOException {
jsonWriter.value(localDate.toString());
}
@Override
public LocalDate read(final JsonReader jsonReader) throws IOException {
return LocalDate.parse(jsonReader.nextString(), DateTimeFormatter.ofPattern("dd.MM.yyyy"));
}
}
@lombok.Data
public class JsonData {
private String firstName;
private ContractData[] contractData;
}
import java.time.LocalDate;
@lombok.Data
public class ContractData {
private Long contract;
private LocalDate contractDate;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как добавить несколько строк в таблицу если одно из значений будет полученно из SELECT? В запросе все значения не меняются кроме, product_id
Можно ли каким-то образом сделать так, чтобы при добавлении файла шрифта (woff, ttf), имя файла, font-family, бралось из данных самого шрифта (его свойств/метаданных)?