2016-08-13 4 views
1

JSON文字列トラブルのPOJO

{ 
"order":{ 
    "address":{ 
    "city":"seattle" 
    }, 
    "orderItem":[ 
    { 
     "itemId":"lkasj", 
     "count":2 
    }, 
    { 
     "itemId":"ldka", 
     "count":3 
    } 
    ] 
    } 
} 

注文クラス

public class Order { 
private OrderItem[] orderItems; 
private CustomerAddress address; 

Order(OrderItem[] orderItems, CustomerAddress address) { 
    this.orderItems = orderItems; 
    this.address = address; 

} 

public OrderItem[] getOrderItems() { 
    return orderItems; 
} 

public void setOrderItems(OrderItem[] orderItems) { 
    this.orderItems = orderItems; 
} 

public CustomerAddress getAddress() { 
    return address; 
} 

public void setAddress(CustomerAddress address) { 
    this.address = address; 
} 
} 

私のOrderItemクラス パッケージcom.cbd.backend.modelのアレイとPOJOにJSON配列を変換します。問題 パッケージcom.cbd.backend.modelを実証する

import org.springframework.data.annotation.Id; 

public class OrderItem { 
    @Id 
    private String id; 
    private String itemId; 
    private String count; 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

unit Test that blows up 

    public String getItemId() { 
     return itemId; 
    } 

    public void setItemId(String itemId) { 
     this.itemId = itemId; 
    } 

    public String getCount() { 
     return count; 
    } 

    public void setCount(String count) { 
     this.count = count; 
    } 
} 

ユニットテスト。

import com.google.gson.Gson; 
import org.junit.Test; 
import static org.junit.Assert.*; 
public class OrderTest { 

    Gson gson = new Gson(); 
    @Test 
    public void gsonToOrder() { 
     Order order = gson.fromJson(a, Order.class); 
     assertNotNull(order); 
     assertNotNull(order.getOrderItems()[0]); 
    } 
    private final String a = "{ \"order\": { \"address\": { \"city\": \"seattle\" },\"orderItem\":[{ \"itemId\":\"lkasj\", \"count\":2 }, { \"itemId\":\"ldka\", \"count\":3 } ] } }"; 
} 

誤っ

答えて

0

あなたのコード内の二つの問題があり、私はgson以外のものを使用する必要がありますか、私はこれを構築しています:

  1. があなたのJSONのルート要素は「順序」で、クラスにはこの名前のプロパティはありません。モデルを変更したり、JSONから要素を削除したりしてみてください。
  2. "orderItem"プロパティの名前に不一致があります。これはクラス内では複数ですが、JSONでは特異です。

これをまとめると、次のJSONはコードを変更することなく動作します。

{ 
    "address":{ 
     "city":"seattle" 
    }, 
    "orderItems":[ 
     { 
      "itemId":"lkasj", 
      "count":2 
     }, 
     { 
      "itemId":"ldka", 
      "count":3 
     } 
    ] 
} 

また、それはJSONに表示される「カウント」は、数値のようですので、あなたは、intまたはjava.lang.IntegerOrderItem.countの種類を変更したい場合があります。