凌空中的 JSONRequest 和 StringRequest 有啥区别
Posted
技术标签:
【中文标题】凌空中的 JSONRequest 和 StringRequest 有啥区别【英文标题】:What is the difference between JSONRequest and StringRequest in volley凌空中的 JSONRequest 和 StringRequest 有什么区别 【发布时间】:2018-01-14 13:28:02 【问题描述】:我一直读到数据来自 json 格式的服务器,当我们想以 json 格式发送一些我们发送到服务器的数据时,数据以 json 格式传输,那么字符串请求来自哪里?我不知道我们是否也可以以字符串格式发布和获取数据,使用字符串和json请求有什么区别和用例?
谢谢!
【问题讨论】:
***.com/questions/32420158/… 不幸的是它没有帮助 JSONRequest 将结果作为 JSONObject 返回。 StringRequest 以字符串形式返回结果(字符串上的 json 结构) 所以整个 json 响应以字符串格式返回? 如果您希望响应是 JSON 对象或 JSON 数组,节省实现序列化的时间并且您不想显式设置内容类型,那么JsonObjectRequest
和 JsonArrayRequest
是您需要的正确工具。但是,如果它是一种不同的格式,或者您只是想使用其他一些序列化/反序列化工具,例如 GSON,那么 StringRequest
是通用的工具。到目前为止,Volley 还缺少 ByteRequest
。
【参考方案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 你的第一个问题阅读***.com/a/32420284/3395198 不,它很有趣@IntelliJ【参考方案2】:关于请求的返回类型,StringRequest
处理 String
作为响应,如 error = false
和 JSONObjectRequest
处理 JSONObject
响应,如 "error" : false
,如何知道它是 JSONObject
?使用括号 ()。
【讨论】:
这意味着响应仍在 json 中,但在字符串请求中仅更改了格式?类似于将 json 转换为字符串格式的中间件? 不,StringRequest的响应是String,服务器返回String,对于JSONObject,服务器返回JSON响应 也就是说服务器也可以返回字符串格式的数据和json对象? 我只知道服务器只返回json格式的数据 服务器只能返回一种类型的数据(Json, xml, String ...)以上是关于凌空中的 JSONRequest 和 StringRequest 有啥区别的主要内容,如果未能解决你的问题,请参考以下文章