Я пытаюсь разобрать файл JSON с помощью GSON для отображения содержимого. Для таких атрибутов, как ship name
Я получаю соответствующие результаты, но для многих других, таких как typeOfShipCargo
, AISversion
и т. Д. Я продолжаю получать значения null
.JSON/GSON parsing возвращает значение null для определенных атрибутов
Я дал основную часть кода, приведенного ниже. Пожалуйста, дайте мне знать, если что-то еще нужно добавить или нет. Приветствия.
JSON файла
[
{
"idmessage": "27301",
"idsession": "362",
"time_stamp_system": "2017-01-20 14:51:14",
"NMEA_string": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"processed": "1",
"MMSI": "0000000001",
"AIS_version": "0",
"IMO_number": "xxxxxxxxxx",
"callSign": "ODLK1",
"name": "ODLXJ KWW",
"type_of_ship_and_cargo": "0",
"bow_to_possition_unit": "212",
"stern_to_possition_unit": "71",
"port_to_possition_unit": "22",
"starboard_to_possitio_unit": "22",
"type_of_position_fixing_divice": "1",
"ETA": "Test",
"destination": "",
"last_static_draught": "0",
"DTE": "127"
}
]
Родитель класс
public class Ship {
private String idmsg;
private String idsession;
private String systemTime;
private String NMEAstring;
private String processed;
private String MMSI;
public Ship(){}
public Ship(String idmsg, String idsession, String systemTime, String NMEAstring, String processed, String MMSI) {
this.idmsg = idmsg;
this.idsession = idsession;
this.systemTime = systemTime;
this.NMEAstring = NMEAstring;
this.processed = processed;
this.MMSI = MMSI;
}
//Getters and setters
}
класс Child
public class ShipDetails extends Ship {
private String AISversion;
private String IMOnumber;
private String callSign;
private String name;
private String typeOfShipCargo;
private String bowToPositionUnit;
private String sternToPositionUnit;
private String portToPositionUnit;
private String starboardToPositionUnit;
private String typeOfPositionFixingDevice;
private String eta;
private String destination;
private String lastStaticDraught;
private String dte;
public ShipDetails(String idmsg, String idsession, String systemTime, String NMEAstring, String processed,
String MMSI, String AISversion, String IMOnumber, String callSign, String name, The rest...) {
super(idmsg, idsession, systemTime, NMEAstring, processed, MMSI);
this.AISversion = AISversion;
this.IMOnumber = IMOnumber;
this.callSign = callSign;
this.name = name;
this.typeOfShipCargo = typeOfShipCargo;
this.bowToPositionUnit = bowToPositionUnit;
this.sternToPositionUnit = sternToPositionUnit;
this.portToPositionUnit = portToPositionUnit;
this.starboardToPositionUnit = starboardToPositionUnit;
this.typeOfPositionFixingDevice = typeOfPositionFixingDevice;
this.eta = eta;
this.destination = destination;
this.lastStaticDraught = lastStaticDraught;
this.dte = dte;
}
//getters and setters
}
класс System
public class ShipController {
private static ArrayList<ShipDetails> shipDet = new ArrayList<ShipDetails>();
public static void main(String[] args) throws IOException{
File inStream = new File("details.json");
Scanner read = new Scanner(inStream);
BufferedReader bf = new BufferedReader(new FileReader("positions.json"));
String json = "";
while (read.hasNext())
{
json += read.nextLine();
}
Gson gson = new Gson();
ShipDetails[] tempShip = gson.fromJson(json, ShipDetails[].class);
if(tempShip == null)
System.out.println("Null");
shipDet.addAll(Arrays.asList(tempShip));
shipPos.addAll(Arrays.asList(tempDetails));
read.close();
//Printing the attribute values. For AIS version it retuns null while for name it doesn't.
for (ShipDetails d : shipDet)
{
System.out.println(d.getAISversion());
}
}
Goddamnit Я разрывал голову, пытаясь выяснить, что не так с моим кодом. Спасибо! – ZeroDarkThirty