반응형
JSONObject - 값을 얻는 방법
http://json.org/javadoc/org/json/JSONObject.html에서 자바 클래스를 사용하고 있습니다.
코드 스니펫은 다음과 같습니다.
String jsonResult = UtilMethods.getJSON(this.jsonURL, null);
json = new JSONObject(jsonResult);
getJSON
다음 문자열을 반환합니다.
{"LabelData":{"slogan":"AWAKEN YOUR SENSES","jobsearch":"JOB SEARCH","contact":"CONTACT","video":"ENCHANTING BEACHSCAPES","createprofile":"CREATE PROFILE"}}
슬로건의 가치를 얻으려면 어떻게 해야 하나요?
페이지에 나와 있는 모든 방법을 시도해 봤지만 효과가 없었어요.
String loudScreaming = json.getJSONObject("LabelData").getString("slogan");
원하는 키/값이 더 깊고 각 레벨의 키/값 배열을 다루지 않는 경우 트리를 재귀적으로 검색할 수 있습니다.
public static String recurseKeys(JSONObject jObj, String findKey) throws JSONException {
String finalValue = "";
if (jObj == null) {
return "";
}
Iterator<String> keyItr = jObj.keys();
Map<String, String> map = new HashMap<>();
while(keyItr.hasNext()) {
String key = keyItr.next();
map.put(key, jObj.getString(key));
}
for (Map.Entry<String, String> e : (map).entrySet()) {
String key = e.getKey();
if (key.equalsIgnoreCase(findKey)) {
return jObj.getString(key);
}
// read value
Object value = jObj.get(key);
if (value instanceof JSONObject) {
finalValue = recurseKeys((JSONObject)value, findKey);
}
}
// key is not found
return finalValue;
}
사용방법:
JSONObject jObj = new JSONObject(jsonString);
String extract = recurseKeys(jObj, "extract");
https://stackoverflow.com/a/4149555/2301224의 지도 코드 사용
이는 중첩된 개체 및 중첩된 배열에 있는 키를 검색할 때 유용합니다.그리고 이것은 모든 경우에 대한 일반적인 해결책입니다.
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class MyClass
{
public static Object finalresult = null;
public static void main(String args[]) throws JSONException
{
System.out.println(myfunction(myjsonstring,key));
}
public static Object myfunction(JSONObject x,String y) throws JSONException
{
JSONArray keys = x.names();
for(int i=0;i<keys.length();i++)
{
if(finalresult!=null)
{
return finalresult; //To kill the recursion
}
String current_key = keys.get(i).toString();
if(current_key.equals(y))
{
finalresult=x.get(current_key);
return finalresult;
}
if(x.get(current_key).getClass().getName().equals("org.json.JSONObject"))
{
myfunction((JSONObject) x.get(current_key),y);
}
else if(x.get(current_key).getClass().getName().equals("org.json.JSONArray"))
{
for(int j=0;j<((JSONArray) x.get(current_key)).length();j++)
{
if(((JSONArray) x.get(current_key)).get(j).getClass().getName().equals("org.json.JSONObject"))
{
myfunction((JSONObject)((JSONArray) x.get(current_key)).get(j),y);
}
}
}
}
return null;
}
}
가능성:
- "키":"값"
- "키": {개체}
- "키" : [어레이]
논리:
- 현재 키와 검색 키가 동일한지 확인하고 같은 경우 해당 키의 값을 반환합니다.
- 오브젝트일 경우 같은 함수에 재귀적으로 값을 보냅니다.
- 배열일 경우 객체가 포함되어 있는지 확인하고, 포함되어 있을 경우 동일한 함수에 반복적으로 값을 전달합니다.
다음 함수를 사용하여 JSON 문자열에서 값을 얻을 수 있습니다.
public static String GetJSONValue(String JSONString, String Field)
{
return JSONString.substring(JSONString.indexOf(Field), JSONString.indexOf("\n", JSONString.indexOf(Field))).replace(Field+"\": \"", "").replace("\"", "").replace(",","");
}
언급URL : https://stackoverflow.com/questions/7451600/jsonobject-how-to-get-a-value
반응형
'programing' 카테고리의 다른 글
$http 인터셉터에 $state(ui-router)를 주입하면 순환 의존성이 발생한다. (0) | 2023.02.22 |
---|---|
typescript react-native를 사용하여 fetch api에 헤더를 추가할 수 없습니다. (0) | 2023.02.22 |
pdf 스트림을 angularjs로 읽는 방법 (0) | 2023.02.22 |
WooCommerce에서 cart_item_data를 가져오려면 어떻게 해야 합니까? (0) | 2023.02.22 |
재료 설계 라이트(Right)JS (0) | 2023.02.22 |