开发过程中有个api需求,就是将最终提交的数据,转成json字符串,作为一个参数传递给服务器。
这个要传递的数据结构如下:
public ArrayList tagJson;
其中,每条数据PtEvaluateItemBean的数据结构如下:
public class PtEvaluateItemBean {
public int tagid;
public String text;
public PtEvaluateOptionBean val;
}
其中,PtEvaluateOptionBean的数据结构如下:
public class PtEvaluateOptionBean {
public int good;
public int bad;
}
需求中,我们的数组有5项,用户进行点踩评价完成后,需要将总的评价结果一并提交给服务端。服务端收到的数据,如同它发给app的一样,json数据如下:
"tagJson": [
{
"tagid": 1,
"text": "text1",
"val": {
"bad": 0,
"good": 0
},
},
{
"tagid": 2,
"text": "text2",
"val": {
"bad": 0,
"good": 0
},
},
{
"tagid": 3,
"text": "text3",
"val": {
"bad": 0,
"good": 0
},
},
{
"tagid": 4,
"text": "text4",
"val": {
"bad": 0,
"good": 0
},
},
{
"tagid": 5,
"text": "text5",
"val": {
"bad": 0,
"good": 0
},
}
]
怎么转化?下面直接贴代码:
public class PtEvaluateItemBean {
public int tagid;
public String text;
public PtEvaluateOptionBean val;
public JSONObject getJSONObject() {
Map map = new HashMap<>();
map.put("tagid", tagid);
map.put("text", text != null ? text : "");
JSONObject obj = new JSONObject(map);
if (val != null) {
JSONObject valObj = new JSONObject(val.getMap());
try {
obj.put("val", valObj);
} catch (JSONException e) {
e.printStackTrace();
}
}
return obj;
}
}
public class PtEvaluateOptionBean {
public int good;
public int bad;
public Map getMap() {
Map map = new HashMap<>();
map.put("good", good);
map.put("bad", bad);
return map;
}
}
将ArrayList类型的数据转为JSON串的方法如下:
public String getEvaluatedOptionsJson(ArrayList checkItemIds) {
if (checkItemIds.isEmpty()) {
return null;
}
JSONArray jsonArray = new JSONArray();
for (PtEvaluateItemBean itemBean : checkItemIds) {
if (itemBean.val == null) {
continue;
}
jsonArray.put(itemBean.getJSONObject());
}
return jsonArray.toString();
}