2015-12-29 30 views
1

我在生成(添加到JsonArray中)後錯過了字段。 我通過ObjectInputStream接收下面的Json字符串。向JsonArray添加缺少元素的結果

[{"firstName":"Vasile","lastName":"Petraru","department":"Management","salary":5600},{"firstName":"Ion","lastName":"Andronic","department":"Finante","salary":3222}] 

Gson gson = new Gson(); 
String a = new String(inputStream.readObject().toString()); 
JsonParser parser = new JsonParser(); 
JsonArray jArray = parser.parse(a).getAsJsonArray(); 

ArrayList<Employee> employees = new ArrayList<>(); 
for(JsonElement obj : jArray){ 
     Employee b = gson.fromJson(obj,Employee.class); 
     employees.add(b); 
} 

後我加入到JsonArray這樣的:

public String generateJSON() { 
    JSONObject object = new JSONObject(); 
    JSONArray array = new JSONArray(); 
    try { 
     object.put("Employees", employees); 
     array.put(object); // <-- here is the probem... 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    return array.toString(); 
} 

a = generateJSON(); 
System.out.println("\nAfter generating: " + a); 
// ---> 

[{"Employees":[{"lastName":"Petraru","salary":5600,"department":"Management"},{"lastName":"Andronic","salary":3222,"department":"Finante"}]}] 

產生我收到所需的字符串後,但沒有「名字」元素...... 爲什麼和如何解決這個?由於

Employee類:

public class Employee implements Serializable { 
public String firstName; 
public String lastName; 
public String department; 
public int salary; 

public Employee(String firstName, String lastName, String department, int salary){ 
    this.firstName = firstName; 
    this.lastName = lastName; 
    this.department = department; 
    this.salary = salary; 
} 
+0

當您將對象放入數組中時,員工對象是否正確填充? –

+0

當然,我打印過了,一切都很好。 – cityboycity1

回答

0

直接使用員工類,而不是你可以嘗試這樣的事:

JSONObject jo = new JSONObject(); 
jo.put("firstName", employee.getFirstName); 
jo.put("lastName", employee.getLastName); 

JSONArray ja = new JSONArray(); 
ja.put(jo); 

JSONObject mainObj = new JSONObject(); 
mainObj.put("employees", ja); 

而在Employee類聲明的getter和setter。 讓我知道這是否有效。