Java 在Android中获取JSONObject中的值类型,以显示对象';s结构

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

在Android中,JSONObject.get(key)返回对象的值。我希望根据包含的数据类型,对每个值进行不同的处理

在我的裸体测试中,我在一个名为
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;
}