【问题标题】:What is the difference between JSONRequest and StringRequest in volley凌空中的 JSONRequest 和 StringRequest 有什么区别
【发布时间】:2018-01-14 13:28:02
【问题描述】:

我一直读到数据来自 json 格式的服务器,当我们想以 json 格式发送一些我们发送到服务器的数据时,数据以 json 格式传输,那么字符串请求来自哪里?我不知道我们是否也可以以字符串格式发布和获取数据,使用字符串和json请求有什么区别和用例?

谢谢!

【问题讨论】:

  • 不幸的是它没有帮助
  • JSONRequest 将结果作为 JSONObject 返回。 StringRequest 以字符串形式返回结果(字符串上的 json 结构)
  • 所以整个 json 响应以字符串格式返回?
  • 如果您希望响应是 JSON 对象或 JSON 数组,节省实现序列化的时间并且您不想显式设置内容类型,那么 JsonObjectRequestJsonArrayRequest 是您需要的正确工具。但是,如果它是一种不同的格式,或者您只是想使用其他一些序列化/反序列化工具,例如 GSON,那么 StringRequest 是通用的工具。到目前为止,Volley 还缺少 ByteRequest

标签: android json http android-volley


【解决方案1】:

StringRequest 类将用于获取任何类型的字符串数据。这 响应可以是 json、xml、html、文本。

 // Request a string response from the provided URL.
StringRequest stringRequest = new StringRequest(Request.Method.GET, URL,
            new Response.Listener<String>() {
    @Override
    public void onResponse(String response) {
        // Display the first 500 characters of the response string.

    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {

    }
});

如果您期望响应中包含 json 对象,则应使用 JsonObjectRequest .

JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET,
            URL, null,
            new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    Log.d(TAG, response.toString());

                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {

                }
            });

【讨论】:

  • 使用字符串请求有什么好处,因为返回的数据仍然是json格式,我们必须解析才能得到字符串,为什么要特定字符串请求
  • 这个“StringRequest 类将用于获取任何类型的字符串数据”你的意思是如果服务器上有数据,例如数字、url 等,但字符串请求只会返回字符串数据?
  • @blackHawk 还有疑问吗??
  • @blackHawk 你的第一个问题阅读stackoverflow.com/a/32420284/3395198
  • 不,它很有趣@IntelliJ
【解决方案2】:

关于请求的返回类型,StringRequest 处理 String 作为响应,如 error = falseJSONObjectRequest 处理 JSONObject 响应,如 {"error" : false},如何知道它是 JSONObject?使用括号 ({)。

【讨论】:

  • 这意味着响应仍在 json 中,但在字符串请求中仅更改了格式?类似于将 json 转换为字符串格式的中间件?
  • 不,StringRequest的响应是String,服务器返回String,对于JSONObject,服务器返回JSON响应
  • 也就是说服务器也可以返回字符串格式的数据和json对象?
  • 我只知道服务器只返回json格式的数据
  • 服务器只能返回一种类型的数据(Json, xml, String ...)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-14
  • 1970-01-01
  • 1970-01-01
  • 2019-08-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多