我将以下数组从PHP返回到我的JAVA Android应用程序:
Array ( [0] => Array ( [referral_fullname] => Name 1 [referral_balance] => 500 ) [1] => Array ( [referral_fullname] => Name 2 [referral_balance] => 500 ) );
在Java中,他们上面的数组看起来像这样:
{"0":{"referral_fullname":"Name 1","referral_balance":"500"},"1":{"referral_fullname":"Name 2","referral_balance":"500"}};
对于我正在使用的简单JSONObject:
JSONTokener tokener = new JSONTokener(result.toString());
JSONObject finalResult = new JSONObject(tokener);
referral_fullname = finalResult.getString("referral_fullname");
但对于我不知道的对象数组!
答案 0 :(得分:4)
String str = your Json-> apply to.String();
JSONObject jObject = new JSONObject(str);
Map<String,String> map = new HashMap<String,String>();
Iterator iter = jObject.keys();
while(iter.hasNext()){
String key = (String)iter.next();
String value = jObject .getString(key);
map.put(key,value);
}
答案 1 :(得分:3)
您的Json语法错误,JSONArray
应该是这样的:
["0":{"referral_fullname":"Name 1","referral_balance":"500"},"1":{"referral_fullname":"Name 2","referral_balance":"500"}];
要解析包含一些JsonArray
的{{1}},请尝试以下操作:
JSONObject
在类//parse the result
JSONObject jsonResult = null;
JSONArray arrayResult = null;
ArrayList<YourObject> listObjects = null;
try {
arrayResult = new JSONArray(result);
if(arrayResult != null) {
listObjects = new ArrayList<YourObject>();
int lenght = arrayResult.length();
for(int i=0; i< lenght; i++) {
JSONObject obj = arrayResult.getJSONObject(i);
YourObject object = new YourObject(obj);
listObjects.add(object);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
中添加构造函数,将Json转换为实例:
YourObject
答案 2 :(得分:2)
你应该使用
JSONArray finalResult = new JSONArray(tokener);
如果可以的话。您的结构现在是一个具有两个字段0和1的对象,其中包含另一个对象。如果要像
那样轻松迭代,则必须获取一个对象数组来代替此复合对象JSONObject jso;
for(int i = finalResult.lenght-1; i >=0; i--){
jso = finalResult.get(i);
// jso == {"referral_fullname":"Name 1","referral_balance":"500"}
[whatever]
}
答案 3 :(得分:1)
试试这个.............
final JSONArray result_array = json.getJSONArray("result");
for (int i = 0; i < result.length(); i++) {
JSONObject joObject = result_array.getJSONObject(i);
String jName = joObject.get("referral_fullname").toString();
String jbalance = joObject.get("referral_balance").toString();
}
答案 4 :(得分:1)
首先制作一个JSON对象,然后在内层看到你有的数据,然后获取数组。 您需要先制作JSON对象。例如,如果resp是一个String(例如作为http响应出现)
JSONObject jsonObject = new JSONObject(resp);
jsonObject可能包含其他JSON对象或JSON数组。如何转换JSON取决于响应。 如果arraykey是JSON对象中的数组,那么我们可以通过以下方式获取数组列表。
JSONArray arr = jsonObject.getJSONArray("arraykey");
检查arr的长度,如果它大于0则根据数据包含JSON对象或JSON数组。 有一个完整的例子,可以找到关于JSON字符串到JSON数组的一些解释 http://www.hemelix.com/JSONHandling