当前位置: 首页 > 面试题库 >

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

慕凌
2023-03-14
问题内容

我是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(response),但他从未告诉我什么是“响应”。

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<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("*********");
}


 类似资料:
  • 问题内容: 我具有来自Web服务的以下JSON字符串,并且正在尝试将其转换为 我在线上对此进行了验证,这似乎是正确的。现在我在android开发中使用以下代码来利用 这会引发异常和类型不匹配的异常。 问题答案: 在这里,您将获得JSONObject,因此请更改以下行: 具有以下内容: 之后

  • 我有一个RestController类,它有一个方法可以根据电影的标题搜索电影: 如果我发送一个json字符串 从邮递员到endpoint,我收到一个空白的回复。 然后我做了一个 就在进入方法后找到字符串filmSearch正是我从邮递员发送的JSON字符串。我的应用程序没有看到JSON和提取值从filmSearch在我的请求附加到应用程序内字符串filmSearch. 如果我移除 在请求映射的一

  • 问题内容: 我有一个Json String,我想将其转换为Java中的数组。 就我所知,我什至不确定是否必须先创建一个对象。 我需要做的eventuallay是将其附加到android应用程序中的ArrayAdapter上。 谢谢 问题答案: 像这样:

  • 问题内容: 我从网络服务获取以下JSON字符串,并尝试将其转换为 我String在线上对此进行了验证,这似乎是正确的。现在我在android开发中使用以下代码来利用 这会引发异常和类型不匹配的异常。 问题答案: 在这里,你将获得JSONObject,因此请更改以下行: 具有以下内容: 之后

  • 问题内容: 我有以下JSON字符串,它是一个Objective C数组,然后编码为JSON: 我想将其转换为常规的PHP数组。我已经尝试了很多东西,但是似乎都没有用: 有任何想法吗? 编辑: 我仍然无法正常工作。 我需要这样做: 但是我想我需要在$ decodedEmails周围加引号才能起作用。如何在$ decodeEmails字符串周围添加引号? 问题答案: 您应该引用您的字符串,它可以正常工

  • 问题内容: 我已经在DOM中植入了一个数组数组,以便以后可以重用它以传输到服务器: 如果我想将其转换回Javascript数组,该怎么做? 问题答案: var obj = $.parseJSON(‘[[“1”,”aaaaaa”,”1”],[“2”,”bbbbbbb”,”2”],[“3”,”ccccccc”,”3”]]’) 假设由于标签而可以使用jquery。