java - 在 Java 中,如何验证 String 是否可以是 JSONArray 以及为什么您的答案比我在我的问题中展示的方法更好
问题描述
当我收到 JSON 字符串以验证它是否是 JSONArray 时,我进行了此验证,但我认为那里一定有更好的东西,我从休息服务连接读取 inputStream,然后我将检查该字符串是否是 JSONArray或者只是一个 JSONObject,在它进入验证 "charAt(0) == '[' 它不会进入验证 cadenaJSON instanceof JSONArray,你们知道更好的方法吗?
while ((cadenaLectura = br.readLine()) != null) {
cadenaJSON = cadenaJSON.concat(cadenaLectura);
}
conn.disconnect();
// If cadenaJSON starts with [ its because its a JSONArray
if (cadenaJSON.charAt(0) == '[') {
// This one isn't working
if ((Object) cadenaJSON instanceof JSONArray) {
System.out.println("Soy un JSONArray");
}
JSONArray jsonArray = new JSONArray(cadenaJSON);
return jsonArray.toString();
} else {
JSONObject json = new JSONObject(cadenaJSON);
return json.toString();
}
解决方案
如评论中所述,您确实应该使用 JSON 库来解析您的响应并检查您是否获得了有效的数组。这是一个例子:
import org.json.*;
....
public boolean isJSONArray(String input) {
try {
new JSONArray(input);
return true;
} catch (JSONException ex) {
return false;
}
}
请注意,charAt(0) == '['
当您有格式错误的 JSON(即不是 JSON 字符串)或在开始字符之前有空格时,该方法会给出不正确的结果[
。考虑这个字符串:["string 1", nothing
推荐阅读
- mysql - 经常无法连接到数据库
- python - 按名称动态访问内置类型对象
- javascript - 放置请求/函数不会更新我的 API
- reactjs - React Navigation - pop() 返回根目录而不是上一页
- c# - Xamarin Forms 在关闭 Current 后显示一个新页面
- javascript - 在这种情况下是否可以制作 XSS?
- spring-cloud-dataflow - scdf 1.7.3 docker k8s @Bean 没有运行,没有日志
- model-view-controller - 为什么在struts2 MVC中模型和视图之间没有直接联系
- android - 如何修复“错误:意外元素
在发现 " - javascript - 在 .env 文件中使用私钥