REST和JSON – 将字符串转换为JSON数组

我是JSON和REST的新手。 我正在使用一个返回如下字符串的服务器:

[{"username":"Hello","email":"hello@email.com","credits":"100","twitter_username":""},{"username":"Goodbye","email":"goodbye@email.com","credits":"0","twitter_username":""}] 

我已经设法在控制台上将它们作为字符串打印出来,但现在我想将它们转换为JSON数组。 到目前为止我的代码没有返回任何错误,但我不知道将什么放入新JSON数组的构造函数中。 我一直指的是一位同事发给我的一段代码,其中构造函数是新的JSONArray(响应),但他从未告诉我’响应’是什么。

 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import sun.misc.BASE64Encoder; public class NetClientGet { public static void main(String[] args) { try { URL url = new URL("http://username:password@mobile.crowdedmedia.co.uk/index.php/api/users/get_users/"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); BASE64Encoder enc = new sun.misc.BASE64Encoder(); String userpassword = "username:password"; String encoded = enc.encode(userpassword.getBytes()); conn.setRequestProperty("Authorization", "Basic " + encoded); if (conn.getResponseCode() != 200) { throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode()); } BufferedReader br = new BufferedReader(new InputStreamReader( (conn.getInputStream()))); String output; System.out.println("Output from Server .... \n"); while ((output = br.readLine()) != null) { System.out.println(output); } JSONArray array = new JSONArray(output); for (int i =0; i < array.size(); i++) { JSONObject row = array.getJSONObject(i); String user = row.getString("username"); System.out.println(user); } conn.disconnect(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } 

  • 使用GSON将字符串格式化为JsonArray
  • 然后遍历JsonArray以获取值

代码示例

 String json = "[{\"username\":\"Hello\",\"email\":\"hello@email.com\",\"credits\":\"100\",\"twitter_username\":\"\"},{\"username\":\"Goodbye\",\"email\":\"goodbye@email.com\",\"credits\":\"0\",\"twitter_username\":\"\"}]"; JsonArray jArray = new JsonParser().parse(json).getAsJsonArray(); for (int i=0;i 

我正在使用gson库来操作json。 你可以从这里下载gson。 这是一个非常好的库来处理json。 首先创建json解析器,它将解析json字符串:

 JsonParser parser = new JsonParser(); 

现在初始化一个空的json数组

 JsonArray jArray = new JsonArray(); 

现在使用解析器创建json数组

 jArray = parser.parse(outputString).getAsJsonArray(); 

我使用过org.json.simple.JSONObject和org.json.simple.JSONArray,我希望net.sf.json.JSONArray也能正常工作。

您应该为输出添加以下字符串格式(JSONArray array = new JSONArray( output );)

  {"YOUR_ARRAY_NAME": [{"username":"Hello","email":"hello@email.com","credits":"100","twitter_username":""},{"username":"Goodbye","email":"goodbye@email.com","credits":"0","twitter_username":""}]} 

现在这是JSONArray的String表示。