java - غسون ديسيرياليساتيون يولد قيمة نول




arrays json (2)

لا يتطابق تعيين غسون مع جسون المعطى. افتراضيا، خرائط غسون خصائص جسون إلى الحقول المناسبة في تعيين الهدف عن طريق الاسم الدقيق . ألق نظرة على:

"idmessage":"27301"

و

private String IdMessage

لا تتطابق حالة اسم الموقع وحالة اسم الحقل. ما تحتاجه هو خريطة جسون بشكل صحيح. إما:

private String idmessage

أو عن طريق تجاوز مطابقة الاسم (وهذا أكثر ملاءمة لمعايير تسمية جافا):

@SerializedName("idmessage")
private String idMessage;

لاحظ حقل واحد في كل سطر. هذا مطلوب من أجل تعليم كل حقل على حدة. أو، إذا أمكن، استخدام كاملكيس على حد سواء في جافا و جسون.

كنت أحاول قراءة ملف جسون وتحويله إلى صفيف ولكن الحصول على قيم خالية من المصفوفة بعد قراءة ملف جسون. أنا باستخدام منشئ الافتراضي لفئة ShipDetail بلدي.

  BufferedReader detailReader = new BufferedReader( new  FileReader(shipDetails));
  // Buffered passed to convert json array to java array
  ShipDetail[] shipDetail  = gson.fromJson(detailReader, ShipDetail[].class );

  System.out.println( shipDetail[0].toString());

  // Convert  array to arrayList
  ArrayList<ShipDetail> detailArray = new ArrayList<ShipDetail>(Arrays.asList(shipDetail));

ملف جسون:

[  
   {  
      "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":null,
      "destination":"",
      "last_static_draught":"0",
      "DTE":"127"
   }
]

فئة ShipDetail :

public class ShipDetail {

    private String IdMessage, IdSession, Time_Stamp_System, Nmea_String, Processed;
    private String Mmsi, Ais_Version, Imo_Number, Callsign, Name, Type_Of_Ship_And_Cargo;
    private String Bow_To_Position_Unit, Stern_To_Position_Unit, Port_To_Position_Unit, Starboard_To_Position_Unit,
            Type_Of_Position_Fixing_Device;
    private String Eta, Destination, Last_Ship_Draught, Dte;

    public String getMmsi() {
        return Mmsi;
    }

    public String toString() {
        return "\n Id Message : " + IdMessage + "\n Id Session : " + IdSession + "\n Time Stam System : "
                + Time_Stamp_System + "\n NMEA String : " + Nmea_String + "\n Processed : " + Processed + "\n MMSI : "
                + Mmsi + "\n AIS Version : " + Ais_Version + "\n IMO Number : " + Imo_Number + "\n Call Sign : "
                + Callsign + "\n Name : " + Name + "\n Type Of Ship And Cargo : " + Type_Of_Ship_And_Cargo
                + "\n Bow To Position Unit : " + Bow_To_Position_Unit + "\n Stern To Position Unit : "
                + Stern_To_Position_Unit + "\n Port To Position Unit : " + Port_To_Position_Unit
                + "\n Starboard To Position Fixing Device : " + Starboard_To_Position_Unit
                + "\n Type Of Position Fixing Device : " + Type_Of_Position_Fixing_Device + "\n ETA : " + Eta
                + "\n Destination : " + Destination + "\n Last Ship Draught : " + Last_Ship_Draught + "\n DTE : " + Dte;
    }
}

يمكنك استخدام شيء على هذا النحو. لاحظ أنك لا تحتاج إلى استخدام Files.readAllBytes ولكن في التعليمات البرمجية يمكن أن يكون أيضا أن BufferedReader يسبب الخطأ. إذا كنت بحاجة إلى ShipDetails صفيف بدلا من قائمة، تحويله أو استخدام نوع المطلوبة في TypeToken .

final GsonBuilder builder = new GsonBuilder();
final Gson gson = builder.enableComplexMapKeySerialization().create();

// you can use the buffered reader here too, but this is easier to debug if shipDetails is a file
final String jsonRepresentation = new String(Files.readAllBytes(shipDetails);

// add a type definition
final Type type = new TypeToken<ArrayList<ShipDetail>>(){}.getType();
ArrayList<ShipDetail> shipDetails = gson.fromJson(jsonRepresentation, type);

وكما ذكر في التعليقات أعلاه، توليد الحاصلين والواضعين.







gson