2016-09-21 142 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

答案看起来正确。最好的方法是遍历列表。