Java 在Android中获取JSONObject中的值类型,以显示对象';s结构
在Android中,JSONObject.get(key)返回对象的值。我希望根据包含的数据类型,对每个值进行不同的处理 在我的裸体测试中,我在一个名为Java 在Android中获取JSONObject中的值类型,以显示对象';s结构,java,android,json,recursion,types,Java,Android,Json,Recursion,Types,在Android中,JSONObject.get(key)返回对象的值。我希望根据包含的数据类型,对每个值进行不同的处理 在我的裸体测试中,我在一个名为assets的文件夹中有一个类似这样的JSON文件,该文件夹与AndroidManifest.xml位于同一个文件夹中: { "string": "example" , "object": { "zero": 0 , "one": 1 , "two": 2 } } 这定义了不同类型的值(字符串,对象,整数) 在我的An
assets
的文件夹中有一个类似这样的JSON文件,该文件夹与AndroidManifest.xml位于同一个文件夹中:
{
"string": "example"
, "object": {
"zero": 0
, "one": 1
, "two": 2
}
}
这定义了不同类型的值(字符串
,对象
,整数
)
在我的Android应用程序中,我知道我可以读取此文件并将其转换为JSONObject
try {
AssetManager manager = context.getAssets();
// Find the file at PROJECT_FOLDER/app/src/main/assets/myfile.json
InputStream is = manager.open("myfile.json");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
String jsonString = new String(buffer, "UTF-8");
Log.d("TAG", jsonString);
JSONObject json = new JSONObject(jsonString);
} catch (Exception ex) {
ex.printStackTrace();
}
我还知道我可以使用迭代器分别处理JSONObject
中的每个键
private void dump(JSONObject json) throws JSONException {
Iterator<String> iterator = json.keys();
while (iterator.hasNext()) {
String key = iterator.next();
Object value = json.get(key);
Log.d(key, " = "+value.toString()); // CHANGE TO GO HERE
}
}
这将从我的测试中记录JSONObject,如下所示:
object:
zero: 0
two: 2
one: 1
string: example
您可以尝试
instanceOf
或尝试obj.optJSONObject(key)
,如果实例不是jsonObject,则返回jsonObject或null。请注意,它的代码是:
/**
* Returns the value mapped by {@code name} if it exists and is a {@code
* JSONObject}, or null otherwise.
*/
public JSONObject optJSONObject(String name) {
Object object = opt(name);
return object instanceof JSONObject ? (JSONObject) object : null;
}
您可以使用“x instanceOf JSONObject”来确定变量x是否具有从“JSONObject”继承的运行时类型。
/**
* Returns the value mapped by {@code name} if it exists and is a {@code
* JSONObject}, or null otherwise.
*/
public JSONObject optJSONObject(String name) {
Object object = opt(name);
return object instanceof JSONObject ? (JSONObject) object : null;
}