Java 语法:JSONArray array = (JSONArray)obj
Java Syntax: JSONArray array = (JSONArray)obj
我正在学习解码 Java 中的 JSON 文件,遇到了一些我不理解的语法。我也是 Java 的新手。这是代码片段:
Object obj = JSONValue.parse(jsonResult);
JSONArray array = (JSONArray)obj;
在我对程序员演讲的最佳尝试中,我了解到 "JSONArray" 是 class。我们正在实例化一个新的 JSON 数组并将其命名为 "array"。我们正在用等号右边的值初始化"array"。
我的问题是 -- 我不明白等号右边发生了什么。为什么括号里是"JSONArray":(JSONArray)obj?我不明白这里发生了什么。
谢谢!
这是一个(未经检查的)类型转换的例子。我建议您首先使用类型比较运算符 instanceof
使用检查转换。像,
JSONArray array = null;
Object obj = JSONValue.parse(jsonResult);
if (obj instanceof JSONArray) {
array = (JSONArray)obj;
}
如果您确定它将始终是 JSONArray
,您可以像
这样在一行中完成
JSONArray array = (JSONArray) JSONValue.parse(jsonResult);
之所以需要强制转换是因为 parse()
的结果是 Object
。
Received JSON 作为其最外层结构,可以是 "object"(映射)或 "array"(列表)。 JSONValue.parse(jsonResult)
生成 JSONObject 或 JSONArray,具体取决于哪种结构在 jsonResult
字符串的最外层。因此必须将 parse
方法声明为 return 这两个 类 中的某些公共 "ancestor"。 JSON-Simple 是一个相当粗糙的 JSON 工具包,除了 Object.
之外,这两个 类 没有共同的超类
想必这种情况下的程序员知道接收到的数据总会有一个JSON"array"作为最外层的结构。他最初将 parse
的结果放在对象引用中(因为对象是 return 从 parse
编辑的形式类型),然后将该值转换为 JSON 数组。
正如 Eliot 所建议的那样,至少在形式上包括一个 instanceof
测试会更好,或者,如果使用 JSON-Simple 以外的工具包,那么可能为允许查询其类型的两个 类 使用公共超类上的接口。
我正在学习解码 Java 中的 JSON 文件,遇到了一些我不理解的语法。我也是 Java 的新手。这是代码片段:
Object obj = JSONValue.parse(jsonResult);
JSONArray array = (JSONArray)obj;
在我对程序员演讲的最佳尝试中,我了解到 "JSONArray" 是 class。我们正在实例化一个新的 JSON 数组并将其命名为 "array"。我们正在用等号右边的值初始化"array"。
我的问题是 -- 我不明白等号右边发生了什么。为什么括号里是"JSONArray":(JSONArray)obj?我不明白这里发生了什么。
谢谢!
这是一个(未经检查的)类型转换的例子。我建议您首先使用类型比较运算符 instanceof
使用检查转换。像,
JSONArray array = null;
Object obj = JSONValue.parse(jsonResult);
if (obj instanceof JSONArray) {
array = (JSONArray)obj;
}
如果您确定它将始终是 JSONArray
,您可以像
JSONArray array = (JSONArray) JSONValue.parse(jsonResult);
之所以需要强制转换是因为 parse()
的结果是 Object
。
Received JSON 作为其最外层结构,可以是 "object"(映射)或 "array"(列表)。 JSONValue.parse(jsonResult)
生成 JSONObject 或 JSONArray,具体取决于哪种结构在 jsonResult
字符串的最外层。因此必须将 parse
方法声明为 return 这两个 类 中的某些公共 "ancestor"。 JSON-Simple 是一个相当粗糙的 JSON 工具包,除了 Object.
想必这种情况下的程序员知道接收到的数据总会有一个JSON"array"作为最外层的结构。他最初将 parse
的结果放在对象引用中(因为对象是 return 从 parse
编辑的形式类型),然后将该值转换为 JSON 数组。
正如 Eliot 所建议的那样,至少在形式上包括一个 instanceof
测试会更好,或者,如果使用 JSON-Simple 以外的工具包,那么可能为允许查询其类型的两个 类 使用公共超类上的接口。