android将json字符串转化为数组,android – 将JSONArray转换为普通数组

如果您正在使用Android附带的JSONObject,那么将用户定义的类型转换为JSONObject / JSONArray则需要再次返回.还有其他库可以自动执行此转换,因此解码/编码JSON只需要一两行.

ProductLineItem lineItem = ...;

JSONObject json = new JSONObject();

json.put( "name", lineItem.getName() );

json.put( "quantity", lineItem.getCount() );

json.put( "price", lineItem.getPrice() );

... // do this for each property in your user defined class

String jsonStr = json.toString();

这可以全部封装在ProductLineItem.toJSON()中.解析类似.我喜欢创建一个构造函数,它接受一个JSONObject并创建如下对象:ProductLineItem obj = new ProductLineItem(jsonObject):

public class ProductLineItem {

private String name;

private int quantity;

private float price;

public MyObject( JSONObject json ) {

name = json.getString("name");

count = json.getInt("quantity");

price = json.optFloat("price");

}

}

处理数组非常相似.所以类似于:

public class ShoppingCart {

float totalPrice;

List rebates = new ArrayList();

List lineItems = new ArrayList();

public ShoppingCart( JSONObject json ) {

totalPrice = json.getFloat("totalPrice");

for( JSONObject rebateJson : json.getArray("rebates") ) {

rebates.add( new Rebate( rebateJson ) );

}

for( JSONObject productJson : json.getArray("lineItems") ) {

lineItems.add( new ProductLineItem( productJson ) );

}

}

public JSONObject toJSON() {

JSONObject json = new JSONObject();

json.put("totalPrice", totalPrice );

JSONArray rebatesArray = new JSONArray();

for( Rebate rebate : rebates ) {

rebatesArray.put( rebate.toJSON() );

}

JSONArray lineItemsArray = new JSONArray();

for( ProductLineItem lineItem : lineItems ) {

lineItemsArray.put( lineItem.toJSON() );

}

json.put( "rebates", rebatesArray );

json.put( "lineItems", lineItemsArray );

return json;

}

}

你只能看到一个简单的2个物体,这个锅炉板代码非常重要.所以你可以继续这样做,或者你可以使用一个库来处理所有这些:

// serialize

String json = new JSONSerializer().serialize( shoppingCart );

// deserialize

ShoppingCart cart = new JSONDeserializer().deserialize( json, ShoppingCart.class );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值