从 JSON 文件中获取值和名称
Get values and names names from JSON file
我的 json
回复:
{
"Countries": [
{
"Country": "China",
"Alpha2": "CN",
"Alpha3": "CHN",
"numbers": {
"Jon": "100",
"Mat": "200",
"SAM": "300"
}
},
{
"Country": "Italy",
"Alpha2": "IT",
"Alpha3": "ITA",
"numbers": {
"Benny": "400",
"Jack": "500"
}
}
]
}
我的代码:
for (int i = 0; i < m_jArry.length(); i++) {
JSONObject jo_inside = m_jArry.getJSONObject(i);
if (jo_inside.getString("Country").equals("Italy"))
{
Log.d("DTAG",jo_inside.getString("Country"));
Log.d("DTAG",jo_inside.getString("Alpha2"));
Log.d("DTAG", jo_inside.getString("Alpha3"));
JSONObject jo_inside2 = jo_inside.getJSONObject("numbers");
Log.d("DTAG", "Size: "+jo_inside2.length());
for (int j=0;j<jo_inside2.length();j++)
{
//???
}
}
如何获取值的名称和他的值?
对于这个例子,我需要 Benny 400,Jack 500
您可以使用 json.keys
获取所有密钥,在您的情况下尝试使用以下代码。
Iterator<String> iter = jo_inside2.keys();
while (iter.hasNext()) {
String key = iter.next();
try {
Object value = jo_inside2.get(key);
} catch (JSONException e) {
//exception
}
}
if (jo_inside.getString("Country").equals("Italy"))
{
Log.d("DTAG",jo_inside.getString("Country"));
Log.d("DTAG",jo_inside.getString("Alpha2"));
Log.d("DTAG", jo_inside.getString("Alpha3"));
JSONObject jo_inside2 = jo_inside.getJSONObject("numbers");
Log.d("DTAG", "Size: "+jo_inside2.length());
for (int j=0;j<jo_inside2.length();j++)
{
Iterator<?> keys = jo_inside2.keys();
while( keys.hasNext() )
{
String key = (String)keys.next();
if ( jo_inside2.get(key) instanceof JSONObject )
{
Object value = jo_inside2.get(key);
}
}
}
}
// 从 JSONObj 获取所有键
Iterator<String> iterator = jo_inside2.keys();
while (iterator.hasNext()) {
String key = iterator.next();
Log.i("TAG","key:"+key +"--Value::"+categoryJSONObj.optString(key);
}
for(Iterator iterator = jo_inside2.keys(); iterator.hasNext();) {
String key = (String) iterator.next();
System.out.println(key+" - "+jo_inside2.get(key));
//Log.i("TAG",key +" - "+jo_inside2.get(key));
}
我的 json
回复:
{
"Countries": [
{
"Country": "China",
"Alpha2": "CN",
"Alpha3": "CHN",
"numbers": {
"Jon": "100",
"Mat": "200",
"SAM": "300"
}
},
{
"Country": "Italy",
"Alpha2": "IT",
"Alpha3": "ITA",
"numbers": {
"Benny": "400",
"Jack": "500"
}
}
]
}
我的代码:
for (int i = 0; i < m_jArry.length(); i++) {
JSONObject jo_inside = m_jArry.getJSONObject(i);
if (jo_inside.getString("Country").equals("Italy"))
{
Log.d("DTAG",jo_inside.getString("Country"));
Log.d("DTAG",jo_inside.getString("Alpha2"));
Log.d("DTAG", jo_inside.getString("Alpha3"));
JSONObject jo_inside2 = jo_inside.getJSONObject("numbers");
Log.d("DTAG", "Size: "+jo_inside2.length());
for (int j=0;j<jo_inside2.length();j++)
{
//???
}
}
如何获取值的名称和他的值? 对于这个例子,我需要 Benny 400,Jack 500
您可以使用 json.keys
获取所有密钥,在您的情况下尝试使用以下代码。
Iterator<String> iter = jo_inside2.keys();
while (iter.hasNext()) {
String key = iter.next();
try {
Object value = jo_inside2.get(key);
} catch (JSONException e) {
//exception
}
}
if (jo_inside.getString("Country").equals("Italy"))
{
Log.d("DTAG",jo_inside.getString("Country"));
Log.d("DTAG",jo_inside.getString("Alpha2"));
Log.d("DTAG", jo_inside.getString("Alpha3"));
JSONObject jo_inside2 = jo_inside.getJSONObject("numbers");
Log.d("DTAG", "Size: "+jo_inside2.length());
for (int j=0;j<jo_inside2.length();j++)
{
Iterator<?> keys = jo_inside2.keys();
while( keys.hasNext() )
{
String key = (String)keys.next();
if ( jo_inside2.get(key) instanceof JSONObject )
{
Object value = jo_inside2.get(key);
}
}
}
}
// 从 JSONObj 获取所有键
Iterator<String> iterator = jo_inside2.keys();
while (iterator.hasNext()) {
String key = iterator.next();
Log.i("TAG","key:"+key +"--Value::"+categoryJSONObj.optString(key);
}
for(Iterator iterator = jo_inside2.keys(); iterator.hasNext();) {
String key = (String) iterator.next();
System.out.println(key+" - "+jo_inside2.get(key));
//Log.i("TAG",key +" - "+jo_inside2.get(key));
}