在安卓中将普通的Java数组或ArrayList转换为Json数组

66

在Android中有没有办法将普通的Java数组或ArrayList转换为Json数组,以便将JSON对象传递给Web服务?

8个回答

115
如果你想要或需要使用Java数组,那么你可以始终使用java.util.Arrays实用类的静态asList()方法将数组转换为List。按照这样的方式应该可以工作。
String mStringArray[] = { "String1", "String2" };

JSONArray mJSONArray = new JSONArray(Arrays.asList(mStringArray));

请注意,代码是随意编写的,因此请将其视为伪代码。


1
数组.asList是必要的吗?尽管JSONArray没有以String[]为参数的构造函数,但以下代码对我来说可以正常工作: String[] strings = {"a", "b"}; JSONArray json = new JSONArray(strings); System.out.println(json.toString()); - M--
1
两种方法都可以,但至少在Android中,JSONArray(strings)直到API 19才被支持。 - Caren
在当前版本的Java中可行的方法是:new JSONArray().addAll(Arrays.asList(mStringArray)) - Cody Jacques
不需要使用“arrays.asList”;否则,它会将原始数组变成一个只有一个元素的新数组。 - david m lee

40
ArrayList<String> list = new ArrayList<String>();
list.add("blah");
list.add("bleh");
JSONArray jsArray = new JSONArray(list);

这只是一个使用字符串数组列表的示例


6
是的!但似乎对普通的String数组无效,因为它们不是Collection的一部分(http://developer.android.com/reference/java/util/Collection.html)?但如果其他方法都失败了,你可以使用for循环来处理。 - Codemonkey
尝试通过Arrays.asList(stringArray)传递。 - Ben Kane
asList() 看起来无法正常工作,因为我现在遇到了这个问题。 - limeandcoconut

8

示例键 =“名称”,值=“Xavier”,并且该值取决于您传递的数组数量。

 try
      {
      JSONArray jArry=new JSONArray();
      for (int i=0;i<3;i++)
      {
       JSONObject jObjd=new JSONObject();
       jObjd.put("key", value);
       jObjd.put("key", value);
       jArry.put(jObjd);
      }
      Log.e("Test", jArry.toString());
      }
 catch(JSONException ex)
     {

     }

7
你需要使用外部库。
 json-lib-2.2.2-jdk15.jar

List mybeanList = new ArrayList();
mybeanList.add("S");
mybeanList.add("b");

JSONArray jsonA = JSONArray.fromObject(mybeanList);
System.out.println(jsonA);

Google Gson是最好的库 http://code.google.com/p/google-gson/


7
这是正确的语法:


String arlist1 [] = { "value1`", "value2", "value3" };
JSONArray jsonArray1 = new JSONArray(arlist1);

5

如果你需要一个简单的Java String 数组,你可以尝试以下方式:

String arr_str [] = { "value1`", "value2", "value3" };

JSONArray arr_strJson = new JSONArray(Arrays.asList(arr_str));
System.out.println(arr_strJson.toString());

如果您有一个类型为String的通用ArrayList,例如ArrayList<String>,那么您应该尝试:
 ArrayList<String> obj_list = new ArrayList<>();
    obj_list.add("value1");
    obj_list.add("value2");
    obj_list.add("value3");
  JSONArray arr_strJson = new JSONArray(obj_list));
  System.out.println(arr_strJson.toString());

1
我的代码将数组转换为Json
代码
List<String>a = new ArrayList<String>();
a.add("so 1");
a.add("so 2");
a.add("so 3");
JSONArray jray = new JSONArray(a);

System.out.println(jray.toString()); 

output

["so 1","so 2","so 3"]

0

将 ArrayList 转换为 JsonArray : 类似这样 [{"title":"value1"}, {"title":"value2"}]

以下是示例:

模型类只有一个参数 title,并覆盖了 toString 方法

class Model(
    var title: String,
    var id: Int = -1
){
    
    override fun toString(): String {
        return "{\"title\":\"$title\"}"
    }
}

创建模型类列表并打印toString。
var list: ArrayList<Model>()
list.add("value1")
list.add("value2")
Log.d(TAG, list.toString())

这是您的输出结果

[{"title":"value1"}, {"title":"value2"}]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接