2014-11-21 42 views
0

我想转换一个JSON字符串数组到Java是从这段JavaScript给出:将JSON数组转换为Java?

javaFunction(["a1", "a2"]); <--- This is called in javascript 

在Java

public static void javaFunction(<What here?> jsonStringArray){ //<---- This is called in Java 
    //Convert the JSON String array here to something i can iterate through, 
    //For example: 

    for(int index = 0; index < convertedArray.length; index++){ 
     System.out.println(convertedArray[index]; 
    } 
} 
+0

没有为JSON处理的Java API:http://www.oracle.com/technetwork/articles/java/json-1973242.html – Markai 2014-11-21 12:21:12

+0

你可以打印您的JSON数组,并显示它,所以我们可以给你确切的答案? – 2014-11-21 12:27:25

+0

JSON数组在问题第一行代码行 – ErikBrandsma 2014-11-21 12:32:52

回答

0

您可以使用此:

List<String> list = new ArrayList<String>(); 
for(int i = 0; i < jsonStringArray.length(); i++){ 
    list.add(jsonStringArray.getJSONObject(i).getString("name")); 
    } 
+0

好的..但.getString(“name”)从哪里来?我应该填写什么javaFunction参数..例如,它应该是JSONArray jsonStringArray?字符串jsonStringArray? – ErikBrandsma 2014-11-21 12:23:25

+0

在java方法中,只需发送需要转换的json数组。而你的json数组应该在键值对中。所以getString会为每个键取值并将其添加到列表中。 – 2014-11-21 12:26:04

+0

是的,我知道!但是jsonStringArray是什么类型? public static void javaFunction( jsonStringArray) – ErikBrandsma 2014-11-21 12:28:26

0

我解决了这个问题:

在JavaScript中:

javaFunction(JSON.Stringify(["a1", "a2"])); 

在Java

public static void javaFunction(String jsonArrayString){ 
    JSONArray jsonArray = new JSONArray(jsonArrayString); 
    List<String> list = new ArrayList<String>(); 
    for(int i = 0; i < jsonArray.length(); i++){ 
     list.add(jsonArray.getString(i)); 
    } 
} 
+0

那么你把它转换成字符串格式?这是如何解决问题的? – 2014-11-21 12:58:20

+0

因为现在java方法需要一个字符串并且实际上获取一个字符串。所以它不会给我错误例外和所有坏的东西 – ErikBrandsma 2014-11-21 13:17:11

0

修剪第一和最后的支架;

jsonArrayString = jsonArrayString.subStr(1,jsonArrayString.length()-1);

你会得到 “A1”, “A2”, “A3”, “A4”

然后用String的分裂功能。

String[] convertedArray= jsonArrayString.split(",");