用Java解析Facebook-FQL多查询
我在解析Facebook的FQL多查询时遇到一些问题。我不知道如何处理result->fql\u result\u集中同名的JSONArray。这是我得到的FQL JSON用Java解析Facebook-FQL多查询,java,android,json,facebook-graph-api,fql.multiquery,Java,Android,Json,Facebook Graph Api,Fql.multiquery,我在解析Facebook的FQL多查询时遇到一些问题。我不知道如何处理result->fql\u result\u集中同名的JSONArray。这是我得到的FQL JSON { "data": [ { "name": "query1", "fql_result_set": [ { "uid": uid1, "eid": eid1, "rsvp_status": "attending" }, { "uid":
{
"data": [
{
"name": "query1",
"fql_result_set": [
{
"uid": uid1,
"eid": eid1,
"rsvp_status": "attending"
},
{
"uid": uid2,
"eid": eid2,
"rsvp_status": "attending"
},
{
"uid": uid3,
"eid": eid3,
"rsvp_status": "attending"
}
]
},
{
"name": "query2",
"fql_result_set": [
{
"uid": uid1,
"name": "name1",
"pic_square": "pic1"
},
{
"uid": uid2,
"name": "name2",
"pic_square": "pic2"
},
{
"uid": uid3,
"name": "name3",
"pic_square": "pic3"
}
]
}
]
}
这是我目前在Java代码中得到的,但我没有得到任何回报。我得到的数据最终会放在ArrayList中
try {
GraphObject go = response.getGraphObject();
JSONObject jso = go.getInnerJSONObject();
JSONArray data = jso.getJSONArray("data");
for(int i = 0; i < data.length(); i++){
JSONObject o1 = data.getJSONObject(i);
JSONArray rs1 = o1.getJSONArray("fql_result_set");
for(int j = 0; j < rs1.length(); j++){
JSONObject rso1 = rs1.getJSONObject(j);
String uid = rso1.getString("uid");
String eid = rso1.getString("eid");
String rsvp = rso1.getString("rsvp_status");
}
JSONObject o2 = data.getJSONObject(i);
JSONArray rs2 = o2.getJSONArray("fql_result_set");
for(int k = 0; k < rs2.length(); k++){
JSONObject rso2 = rs2.getJSONObject(k);
String name = rso2.getString("name");
String pic = rso2.getString("pic_square");
}
}
} catch (JSONException e) {
e.printStackTrace();
}
试试看{
GraphObject go=response.getGraphObject();
JSONObject jso=go.getInnerJSONObject();
JSONArray data=jso.getJSONArray(“数据”);
对于(int i=0;i
有人知道我需要如何解析这个JSON结果吗?
提前谢谢
解决方案
try {
people = new ArrayList<Person>();
GraphObject go = response.getGraphObject();
JSONObject jso = go.getInnerJSONObject();
JSONArray data = jso.getJSONArray("data").getJSONObject(0)
.getJSONArray("fql_result_set");
JSONArray data2 = jso.getJSONArray("data").getJSONObject(1)
.getJSONArray("fql_result_set");
for (int i = 0; i < data.length(); i++) {
Person p = new Person();
JSONObject o1 = data.getJSONObject(i);
uid = o1.getString("uid");
p.setUserId(uid);
p.setRsvp_status(o1.getString("rsvp_status"));
for (int j = 0; j < data2.length(); j++) {
JSONObject o2 = data2.getJSONObject(j);
if (p.getUserId().equals(o2
.getString("uid"))) {
p.setName(o2.getString("name"));
p.setPic(o2.getString("pic_square"));
}
}
people.add(p);
}
} catch (JSONException e) {
e.printStackTrace();
}
试试看{
people=newarraylist();
GraphObject go=response.getGraphObject();
JSONObject jso=go.getInnerJSONObject();
JSONArray数据=jso.getJSONArray(“数据”).getJSONObject(0)
.getJSONArray(“fql_结果集”);
JSONArray数据2=jso.getJSONArray(“数据”).getJSONObject(1)
.getJSONArray(“fql_结果集”);
对于(int i=0;i
//将整个结果分配给JSON对象
JSONObject结果=任何变量名
//获取“数据”JSONArray
JSONArray数组=result.getJSONArray('data'))
//环路
对于(i=0;i
**此时,obj是“name”:“query1”,
“fql_结果_集”:[
{
“uid”:uid1,
“eid”:eid1,
“rsvp_状态”:“出席”
},
{
“uid”:uid2,
“eid”:eid2,
“rsvp_状态”:“出席”
},
{
“uid”:uid3,
“eid”:eid3,
“rsvp_状态”:“出席”
}
]
根据循环计数,name
的值为query1
或query2
。您可以使用迄今为止用于访问fql\u结果集]的方法:[
{
“uid”:uid1,
“eid”:eid1,
“rsvp_状态”:“出席”
},
{
“uid”:uid2,
“eid”:eid2,
“rsvp_状态”:“出席”
},
{
“uid”:uid3,
“eid”:eid3,
“rsvp_状态”:“出席”
}
]
GLHF!试试这个:
String strEvents = new JSONArray(apiResponse).getJSONObject(0).toString();
String strVenues= new JSONArray(apiResponse).getJSONObject(1).toString();
jsonArray = new JSONObject(strEvents).getJSONArray("fql_result_set");
jsonVenues = new JSONObject(strVenues).getJSONArray("fql_result_set");
String strEvents = new JSONArray(apiResponse).getJSONObject(0).toString();
String strVenues= new JSONArray(apiResponse).getJSONObject(1).toString();
jsonArray = new JSONObject(strEvents).getJSONArray("fql_result_set");
jsonVenues = new JSONObject(strVenues).getJSONArray("fql_result_set");