如果我做
JSONArray array = new JSONArray();
[...]
this.addField("array", array);
它生成:
{..., "array":"[\"x\", \"y\"]" }
应该是:
{..., "array": ["x", "y"] }
sinfonier可能会在jarray对象上调用toString。我认为它应该创建一个完整的json,然后在完整的json上调用toString。
还有其他办法吗?
(这是一个非常具体的问题,对不起,但还没有可用的sinfonier标签)
答案 0 :(得分:0)
所以,我参加了在Campus Party Recife上的sinfonier Hackathon,如果你需要创建一个数组,你需要先创建json对象并将它们添加到数组中,如下所示:
import org.json.JSONArray;
...
List aryLst = new ArrayList();
aryLst.add("x");
aryLst.add("y");
JSONArray list = new JSONArray(aryLst);
Sinfonier使用org.json包来操作json对象。
但是如果你的螺栓从一个truple获得json并且你在一个字段中保存一个json的值,你可以直接从truple获得这个值并保存。或者你可以使用json字段,就像其他螺栓或排水管中的字段一样。
答案 1 :(得分:0)
为了创建一个数组列表并将其添加到当前元组/映射的字段中,需要创建一个ArrayList>实例
Firts导入com.google.gson库:
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
然后将源数组中的每个项添加到新的ArrayList实例:
JSONArray originalJsonArray = new JSONArray(json);
ArrayList<Map<String, Object>> newArrayList = new ArrayList<Map<String, Object>>();
if (originalJsonArray != null) {
for (int i=0;i<originalJsonArray.length();i++){
Map<String, Object> fieldValueItem = new Gson().fromJson(originalJsonArray.get(i).toString(), new TypeToken<HashMap<String, Object>>() {}.getType());
newArrayList.add(fieldValueItem);
}
}
最后添加新阵列:
this.addField("newarraylist",newArrayList);
this.addField("newarraylistlength",newArrayList.length());