如何使用Java将JSON值传入String数组?

时间:2013-11-26 13:27:40

标签: java json

我有一个Java Rest API @PUT。哪个是接收json数据,如下面的格式所示

  

[ “NAME1,scope1,值1”, “NAME2,scope2,值2”]

我在我的Java API方法中获得此值为

  

(String someList)

someList将包含[“name1,scope1,value1”,“name2,scope2,value2”]

如何在字符串数组中获取这些值(“name1,scope1,value1”和“name2,scope2,value2”)?

3 个答案:

答案 0 :(得分:1)

使用org.json包,这样做(假设响应为responseString中的String):

JSONArray myJSON = new JSONArray(responseString);
String[] myValues = new String[myJSON.length];
for(int i=0; i<myValues.length; i++) {
    myValues[i] = myJSON.getString(i);
}

如果你想在myValues []中使用','作为分隔符拆分字符串,你可以这样做:

String[] innerArray = myValues[i].split(","); 

答案 1 :(得分:0)

您可以将部件放入String的数组中,只需一行:

String[] parts = someList.replaceAll("^\\[\"|\"\\]$", "").split("\",\"");

replaceAll()的调用剥离了前导和尾随JSON装饰,剩下的内容将分割为目标部分之间出现的内容,即","


请注意,由于有效json的灵活性,使用JSON库比使用“基于字符串”的方法更安全。仅在无法使用json库时才使用此选项。

答案 2 :(得分:0)

示例JSON代码:

import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.parser.ParseException;
import org.json.simple.parser.JSONParser;

class JsonDecodeDemo 
{
   public static void main(String[] args) 
   {
      JSONParser parser=new JSONParser();
      String s = "[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}]";
      System.out.println("s = " + s);
      try{
         Object obj = parser.parse(s);
         JSONArray array = (JSONArray)obj;
         System.out.println("The 2nd element of array");
         System.out.println(array.get(1));
         System.out.println();

         JSONObject obj2 = (JSONObject)array.get(1);
         System.out.println("Field \"1\"");
         System.out.println(obj2.get("1"));    

         s = "{}";
         obj = parser.parse(s);
         System.out.println(obj);

         s= "[5,]";
         obj = parser.parse(s);
         System.out.println(obj);

         s= "[5,,2]";
         obj = parser.parse(s);
         System.out.println(obj);


      }catch(ParseException pe){
         System.out.println("position: " + pe.getPosition());
         System.out.println(pe);
      }
   }
}

你可以参考这个。