android数组转json对象,java – 使用gson将json数组转换为android中的json对象?

我将一个json数组从活动A传递给活动B.然后我使用GSON库将值插入到数组中.这是我当前的代码.

public void gsonResponse(String json) {

try {

JSONObject jsonObject = new JSONObject(json);

JSONArray jsonArray = jsonObject.getJSONArray("result");

for (int i = 0; i < jsonArray.length(); i++) {

LinkedHashMap linkedHashMap = new LinkedHashMap<>();

JSONObject innerJosonObject = new JSONObject(jsonArray.getString(i));

// you need to put all values from jsonObject to map for managing the order..

linkedHashMap.put("doc_no", textViewInvNo.getText().toString());

linkedHashMap.put("itembarcode", innerJosonObject.getString("itembarcode"));

linkedHashMap.put("net_wt", innerJosonObject.getString("net_wt"));

linkedHashMap.put("gross_wt", innerJosonObject.getString("gross_wt"));

linkedHashMap.put("stone_wt", innerJosonObject.getString("stone_wt"));

linkedHashMap.put("stone_amt", innerJosonObject.getString("stone_amt"));

linkedHashMap.put("rate", innerJosonObject.getString("rate"));

linkedHashMap.put("making", innerJosonObject.getString("making"));

linkedHashMap.put("qty", innerJosonObject.getString("qty"));

linkedHashMap.put("net_rate", innerJosonObject.getString("net_rate"));

linkedHashMap.put("item_total", innerJosonObject.getString("item_total"));

linkedHashMap.put("sum_total", innerJosonObject.getString("sum_total"));

Gson gson = new Gson();

// convert linkedHashMap to json string and it will keep the insertion order..

String string = gson.toJson(linkedHashMap, LinkedHashMap.class);

jsonArray.put(i, string);

}

jsonObject.put("result", jsonArray);

String jsonResp = jsonObject.toString();

jsonFormattedString = jsonResp.replaceAll("\\\\","");

Log.d("NEW JSON", jsonFormattedString);

} catch (JSONException e) {

e.printStackTrace();

}

}

输出结果如下: –

{"result":["{"doc_no":"ES101","itembarcode":"BRMS","net_wt":"10","gross_wt":"1","stone_wt":"0","stone_amt":"0","rate":"32000","making":"100","qty":"1","net_rate":"32100.0","item_total":"32100.0","sum_total":"64600.0"}",

"{"doc_no":"ES101","itembarcode":"MSAA0015","net_wt":"10","gross_wt":"11","stone_wt":"100000","stone_amt":"1","rate":"32000","making":"500","qty":"1","net_rate":"32500.0","item_total":"32500.0","sum_total":"64600.0"}"]}

但我想要的输出应该是这样的: –

[{"doc_no":"IN1001","itembarcode":"BRMS123456\nFLT22K","net_wt":"10","gross_wt":"10","stone_amt":"0","rate":"29000","making":"999","qty":"1","net_rate":"29999.0","item_total":"29999.0","sum_total":"30299.0","stone_wt":"0"},

{"doc_no":"IN1001","itembarcode":"BRMS\nGA24K","net_wt":"10","gross_wt":"1","stone_amt":"0","rate":"32000","making":"100","qty":"1","net_rate":"","item_total":"","sum_total":"30299.0","stone_wt":""}]

我怎样才能实现它?任何建议或帮助表示赞赏.谢谢.

解决方法:

实际上你不需要以下一行:

jsonObject.put("result", jsonArray);

只需使用现有的jsonArray,如下所示:

String jsonResp = jsonArray.toString();

另一个说明.你会在你的回复中获得额外的“”,这是因为jsonArray.put(i,string); for循环中的语句,插入额外的“”.你可以简单地使用以下内容来解决这个问题:

jsonResp = jsonResp.replaceAll("\"[{]", "{");

jsonResp = jsonResp.replaceAll("[}]\"", "}");

标签:json,java,arrays,android,gson

来源: https://codeday.me/bug/20190519/1135342.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值