如何将对象的ArrayList转换为单独的JSON对象

时间:2016-09-21 21:14:46

标签: java json jsp servlets

我正在编写一个JSP webapp,现在我有点陷入困境。我一直在使用Java对象的ArrayList,每个都有一个属性列表。它们是具有firstName,lastName等属性的Order对象。在我的开发中,我需要将各个订单作为JSON数组存储在javascript变量中。我可以使用servlet将arraylist转换为JSON,但JSON具有每个Order对象的重复属性,如下所示:

[{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);

4 个答案:

答案 0 :(得分:0)

尝试遍历数组列表,为每个对象创建一个JSON对象,而不是整个转换数组列表。

答案 1 :(得分: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:

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

答案 2 :(得分: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

答案 3 :(得分:0)

通过ssc回答是正确的。最好的方法是遍历列表。