Я пытаюсь проанализировать некоторые json, используя Джексона, и я основал свой код на примерах на сайте, но я не получаю ошибку синтаксического анализа, поскольку поле возвращает ноль.я перечислил мой код разбора и мои классы ниже, может кто-нибудь посоветовать мне, где я ошибся, пожалуйста?
String json2 = "[{\"odd\":\"110601\",\"oda\":\"MAN\",\"odt\":\"0655\",\"oad\":0,\"oaa \":\"IBZ\",\"oat\":\"1045\",\"rdd\":7,\"rda\":\"IBZ\",\"rdt\":\"1130\",\"rad\":7,\"raa\":\"MAN\",\"rat\":\"1315\",\"d\":7,\"sp\":[{ \"s\": \"test\", \"p\": \"1\" },{ \"s\": \"test\", \"p\": \"2\" },{ \"s\": \"test\", \"p\": \"3\" },{ \"s\": \"test\", \"p\": \"4\" }]}]";
JsonFactory f = new JsonFactory();
JsonParser jp = f.createJsonParser(json2);
Flight2 flight2 = new Flight2();
jp.nextToken(); // will return JsonToken.START_OBJECT (verify?)
while (jp.nextToken() != JsonToken.END_OBJECT) {
String fieldname = jp.getCurrentName();
jp.nextToken(); // move to value, or START_OBJECT/START_ARRAY
if ("sp".equals(fieldname)) { // contains an object
FlightSP flightsp = new FlightSP();
while (jp.nextToken() != JsonToken.END_OBJECT) {
String namefield = jp.getCurrentName();
jp.nextToken(); // move to value
if ("s".equals(namefield)) {
flightsp.setS(jp.getText());
}else if ("p".equals(namefield)) {
flightsp.setP(jp.getText());
} else {
throw new IllegalStateException("Unrecognized field '"+fieldname+"'!");
}
}
flight2.setFlightSP(flightsp);
}else if ("odd".equals(fieldname)){
flight2.setOdd(jp.getText());
}else if ("oda".equals(fieldname)){
flight2.setOda(jp.getText());
}else if ("odt".equals(fieldname)){
flight2.setOdt(jp.getText());
}else if ("oad".equals(fieldname)){
flight2.setOad(jp.getText());
}else if ("oaa".equals(fieldname)){
flight2.setOaa(jp.getText());
}else if ("oat".equals(fieldname)){
flight2.setOat(jp.getText());
}else if ("rdd".equals(fieldname)){
flight2.setRdd(jp.getText());
}else if ("rda".equals(fieldname)){
flight2.setRda(jp.getText());
}else if ("rdt".equals(fieldname)){
flight2.setRdt(jp.getText());
}else if ("rad".equals(fieldname)){
flight2.setRad(jp.getText());
}else if ("raa".equals(fieldname)){
flight2.setRaa(jp.getText());
}else if ("rat".equals(fieldname)){
flight2.setRat(jp.getText());
}else {
throw new IllegalStateException("Unrecognized field '"+fieldname+"'!");
}
}
jp.close(); // ensure resources get cleaned up timely and properly
public class Flight2{
@Id
Long id;
private String _odd;//out_departure_date
private String _oda;//out_departure_iata_code;
private @Unindexed String _odt;//out_departure_time;
private @Unindexed String _oad;//out_arrival_date;
private String _oaa;//out_arrival_iata_code;
private @Unindexed String _oat;//out_arrival_time;
private @Unindexed String _rdd;//rtn_departure_date;
private @Unindexed String _rda;//rtn_departure_iata_code;
private @Unindexed String _rdt;//rtn_departure_time;
private @Unindexed String _rad;//rtn_arrival_date;
private @Unindexed String _raa;//rtn_arrival_iata_code;
private @Unindexed String _rat;//rtn_arrival_time;
private String _d;//duration;
private @Unindexed FlightSP _flightsp;//table containing just supplier and price
public void setFlightSP(FlightSP flightsp){_flightsp = flightsp;}
public void setOdd(String odd) {_odd = odd;}
public void setOda(String oda) {_oda = oda;}
public void setOdt(String odt) {_odt = odt;}
public void setOad(String oad) {_oad = oad;}
public void setOaa(String oaa) {_oaa = oaa;}
public void setOat(String oat) {_oat = oat;}
public void setRdd(String rdd) {_rdd = rdd;}
public void setRda(String rda) {_rda = rda;}
public void setRdt(String rdt) {_rdt = rdt;}
public void setRad(String rad) {_rad = rad;}
public void setRaa(String raa) {_raa = raa;}
public void setRat(String rat) {_rat = rat;}
public FlightSP getFlightSP(){return _flightsp;}
public String getOdd() {return _odd;}
public String getOda() {return _oda;}
public String getOdt() {return _odt;}
public String getOad() {return _oad;}
public String getOaa() {return _oaa;}
public String getOat() {return _oat;}
public String getRdd() {return _rdd;}
public String getRda() {return _rda;}
public String getRdt() {return _rdt;}
public String getRad() {return _rad;}
public String getRaa() {return _raa;}
public String getRat() {return _rat;}
}
public class FlightSP {
@Id
Long id;
private @Unindexed String _s, _p;
public void setS(String s) {_s = s;}
public void setP(String p) {_p = p;}
public String getS() {return _s;}
public String getP() {return _p;}
}