我有一个ArrayList,我在一个列表视图的ArrayAdapter中使用它。我需要获取列表中的项,并将它们转换为JSONArray以发送到API。我四处搜索了一下,但没有找到任何解释如何工作的东西,任何帮助都将不胜感激。
更新-解决方案
以下是我最终解决这个问题的方法。
数组列表中的对象:
public class ListItem {
private long _masterId;
private String _name;
private long _category;
public ListItem(long masterId, String name, long category) {
_masterId = masterId;
_name = name;
_category = category;
}
public JSONObject getJSONObject() {
JSONObject obj = new JSONObject();
try {
obj.put("Id", _masterId);
obj.put("Name", _name);
obj.put("Category", _category);
} catch (JSONException e) {
trace("DefaultListItem.toString JSONException: "+e.getMessage());
}
return obj;
}
}
下面是我如何转换它:
ArrayList<ListItem> myCustomList = .... // list filled with objects
JSONArray jsonArray = new JSONArray();
for (int i=0; i < myCustomList.size(); i++) {
jsonArray.put(myCustomList.get(i).getJSONObject());
}
并且输出:
[{"Name":"Name 1","Id":0,"Category":"category 1"},{"Name":"Name 2","Id":1,"Category":"category 2"},{"Name":"Name 3","Id":2,"Category":"category 3"}]
9条答案
按热度按时间wa7juj8i1#
如果我正确地理解了JSONArray构造函数,您可以从任何Collection(arrayList是Collection的子类)构建它们,如下所示:
参考文献:
x6h2sr282#
使用Gson库将ArrayList转换为JsonArray。
x3naxklr3#
当有人发现OP想要将自定义列表转换为
org.json.JSONArray
而不是com.google.gson.JsonArray
时,正确答案应该如下:gopyfrb34#
w6mmgewl5#
有了Kotlin和Gson,我们可以更容易地做到这一点:
1.首先,添加Gson依赖项:
第一个月
1.创建一个单独的
kotlin
文件,添加以下方法注意:不要添加声明类,只添加这些方法,一切都会好的.
1.现在致电:
创建gson的引用:
瓦尔gson=Gson()
要将数组转换为json字符串,请调用:
要从json字符串获取数组,请调用:
要将模型转换为json字符串,请调用:
要将json字符串转换为模型,请调用:
erhoui1w6#
添加到您的等级:
将
ArrayList
转换为JsonArray
bxjv4tth7#
我知道它已经回答了,但这里有一个更好的解决方案使用以下代码:
这样,您就可以从类中访问变量,而无需手动键入它们。
又快又好..希望这能帮上忙。
干杯:D
eagi6jfj8#
下面是Jackson的解决方案:
您可以使用ObjectMapper接收JSON字符串,然后将该字符串转换为JSON数组。
zfciruhq9#
当有很多字段时,改进OP的答案。可以减少一些字段枚举的代码...(但要知道反射较慢。)