2016-09-21 177 views
0

我正在編寫一個JSP Web應用程序,現在我有點卡住了。我一直在使用Java對象的ArrayList,每個對象都有一個屬性列表。它們是具有像firstName,lastName等屬性的Order對象。在我的開發中的這一點上,我需要將各個訂單作爲JSON數組存儲在JavaScript變量中。我可以使用servlet將ArrayList轉換爲JSON,但JSON具有每個Order對象的重複屬性,如下所示:如何將對象的ArrayList轉換爲單獨的JSON對象

[{firstName:Mike,lastName:Daniels,..... firstName:John ,lastName:Doe ... etc ...}]

顯然,JSON是由我所有的Order對象組成的,它們串成一個JSON數組。我想知道的是,我需要根據當時應用程序中的訂單數量將字符串拆分爲單獨的變量。

下面是對象如何設置的方法。謝謝!

Object orders = request.getSession().getAttribute("orders"); 

    //this is a string of order properies/values 
    String json = new Gson().toJson(orders); 

    HttpSession session = request.getSession(); 
    session.setAttribute("jsonOrders", json); 

回答

0

嘗試遍歷數組列表,爲每個對象創建一個JSON對象,而不是整個轉換數組列表。

0

我們假設你的訂單實體是這樣的:

public class Order { 
    private String firstName; 
    private String lastName; 
    // getters & setters 
} 

,你會得到你的訂單數據像請求:

[{ 
    "firstName": "Mike", 
    "lastName": "Daniels" 
}, { 
    "firstName": "John", 
    "lastName": "Doe" 
}] 

你應該能夠使用

將其轉換爲 List<Order>
List<Order> orders = gson.fromJson(response, Order.class); 

然後,您可以遍歷該列表:

for (Order order: orders) { 
    // Whatever you want to do 
} 

或者,如果你使用的是Java 8:SSC

orders.forEach (order -> System.out::println); 
0

下面是使用GSON庫解決方案,

//Order.java 
public class Order { 
private String firstName; 
private String lastName; 
public String getFirstName() { 
    return firstName; 
} 
public void setFirstName(String firstName) { 
    this.firstName = firstName; 
} 
public String getLastName() { 
    return lastName; 
} 
public void setLastName(String lastName) { 
    this.lastName = lastName; 
} 
} 

//Orders.java 
public class Orders { 
Order[] order; 

public Order[] getOrder() { 
    return order; 
} 

public void setOrder(Order[] order) { 
    this.order = order; 
} 
} 

import com.google.gson.Gson; 
//Solution.java 
public class Solution { 

public static void main(String[] args) { 
    String json = "{\"order\":[{\"firstName\":\"Mike\",\"lastName\":\"Daniels\"},{\"firstName\":\"John\",\"lastName\":\"Doe\"}]}"; 
    Orders orders = new Gson().fromJson(json, Orders.class); 
    Order[] orderArr = orders.getOrder(); 
    for(int i=0; i<orderArr.length;i++){ 
     System.out.println("First Name : "+ orderArr[i].getFirstName()); 
     System.out.println("Last Name "+orderArr[i].getLastName()); 
    } 
} 

} 

**Output** 

First Name : Mike 
Last Name Daniels 
First Name : John 
Last Name Doe 
0

答案看起來正確。最好的方法是遍歷列表。