안드로이드에서 JSONObject.get (key)는 객체 값을 반환합니다. 각 값은 포함 된 데이터 유형에 따라 다르게 처리하고 싶습니다.안드로이드에서 JSONObject에 값 유형 가져 오기, 객체 구조 표시
{
"string": "example"
, "object": {
"zero": 0
, "one": 1
, "two": 2
}
}
이 다른 유형 (string
, object
, integer
)의 값을 정의 : 내 베어 본 시험에서
, 나는 AndroidManifest.xml을 같은 폴더에 assets
라는 이름의 폴더에이 같은 JSON 파일이 .
내 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
}
}
I은
value
자체에게
JSONObject
이며, 만약 그렇다면 I는 전체 객체의 구조를 기록 할 수 있도록, 반복적으로
dump()
메소드를 호출하는지 확인하고자
. @Michael 아론 SAFYAN 및 @royB의 입력에 따라
편집
, 나는 이제 다음dump()
방법이있다. 다음과 같이
private String dump(JSONObject json, int level) throws JSONException {
Iterator<String> iterator = json.keys();
String output = "";
String padding = "";
for (int ii=0; ii<level; ii++) {
padding += " ";
}
while (iterator.hasNext()) {
String key = iterator.next();
Object value = json.get(key);
if (value instanceof JSONObject) {
output += "\r"+key+": "+dump((JSONObject) value, level+1);
} else {
output += "\r"+padding+key+": "+value;
}
}
return output;
}
이 내 시험에서 된 JSONObject를 기록
object:
zero: 0
two: 2
one: 1
string: example
당신은 변수 x "가 된 JSONObject"에서 상속 실행시의 형태가 있는지 확인하기 위해 "X instanceof를 된 JSONObject"를 사용할 수와 동일하게 제공
: 단지에 대한 코드는 것을 알 수 있습니다. –