2016-09-21 20 views
0

私はJSP Webアプリケーションを作成していますが、今はちょっとしたことがあります。私はJavaオブジェクトのArrayListを使用しており、それぞれにプロパティのリストがあります。 firstName、lastNameなどのプロパティを持つOrderオブジェクトです。開発のこの時点で、個々の注文をjavascript変数にJSON配列として格納する必要があります。サーブレットを使用してarraylistをJSONに変換することはできますが、JSONには次のようなOrderオブジェクトごとに繰り返しプロパティがあります。オブジェクトのArrayListを別々のJSONオブジェクトに変換する方法

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

明らかに、JSONはすべてのOrderオブジェクトを1つのJSON配列としてまとめたものです。私が思っているのは、その時点でアプリ内のOrdersの数に応じて文字列を別々の変数に分割する必要があることです。

オブジェクトが役立つ場合、オブジェクトがどのように設定されます。ありがとう!

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 
} 

とあなたのようなリクエストでご注文データを取得する:あなたが

を使用して List<Order>に変換することができるはず

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

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); 
0

をGsonライブラリを使用したソリューションで、SSCによって

//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

回答が右に見えます。最良の方法はリストを反復することです。

関連する問題