REST和JSON - 转换字符串JSON数组(REST and JSON - convertin

2019-06-26 08:06发布

我是新来的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();

      }

    }
}

Answer 1:

  • 使用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<jArray.size();i++) {
    JsonObject jsonObject = jArray.get(i).getAsJsonObject();
    System.out.println(jsonObject.get("username"));
    System.out.println(jsonObject.get("email"));
    System.out.println(jsonObject.get("credits"));
    System.out.println(jsonObject.get("twitter_username"));
    System.out.println("*********");
}


Answer 2:

我使用GSON库来操纵JSON。 您可以从以下网址下载GSON 这里 。 这是一个非常好的库来处理JSON。 创建JSON解析器首先,它将解析JSON字符串:

JsonParser parser = new JsonParser();

现在初始化一个空JSON数组

JsonArray jArray = new JsonArray();

现在使用的解析器创建JSON数组

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


Answer 3:

我已经使用org.json.simple.JSONObject和org.json.simple.JSONArray,我希望net.sf.json.JSONArray也同样工作。

你应该把下面的字符串格式输出 (JSONArray阵列=新JSONArray( 输出 );)

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

现在,这是JSONArray的字符串表示。



文章来源: REST and JSON - converting string to JSON array
标签: java json rest