我在解析 JSON 代码时遇到问题。我正在使用 Android 上的 Facebook SDK。看过很多教程,但对我没有帮助。
{
"id": "1000004577",
"friends": {
"data": [
{
"id": "11343",
"statuses": {
"data": [
{
"from": {
"name": "Maria",
"id": "1134"
},
"message": "...How wonderfull life ",
"updated_time": "2011-07-05T21:42:29+0000",
"id": "18665783"
},
{
"from": {
"name": "Maria ",
"id": "113931"
},
"message": "Ab Montag geht es wieder um 8 Uhr los!\nWir werden jetzt ein Woche vom Herrn Vollrerrichtetitet die N wie möglich!!!\n\nIm auftrag von:\n\n Herrn Siebert",
"updated_time": "2010-10-01T18:05:59+0000",
"id": "158583"
},
{
"from": {
"name": "Maria",
"id": "11343"
},
"message": "Esmu majas...!!! viss ir labi!!!",
"updated_time": "2010-07-16T08:04:36+0000",
"id": "137470438"
},
{
"from": {
"name": "Maria ",
"id": "113421"
},
"message": "I miss kitkat ice-cream!:(",
"updated_time": "2010-06-06T16:46:13+0000",
"id": "10231545"
},
{
"from": {
"name": "Maria",
"id": "113121"
},
"message": "its snowin..xD or it looks like!!!!",
"updated_time": "2010-06-02T12:57:39+0000",
"id": "12623356466"
}
],
"paging": {
"previous": "https://graph.facebook.com/1134393121/statuses?limit=5&fields=from,message,updated_time&since=1309902149&__paging_token=1866653502783",
"next": "https://graph.facebook.com/1134393121/statuses?limit=5&fields=from,message,updated_time&until=1275483459&__paging_token=126233544066466"
}
}
},
{
"id": "1179089",
"statuses": {
"data": [
{
"from": {
"name": "Kristine Vaidere",
"id": "123089"
},
"message": "Запомни! Если ты отключаешь мозги, то ты обязательно должна включить телефон. Что-то из этого должно работать всегда. :D",
"updated_time": "2013-07-31T08:43:12+0000",
"id": "1020030233771"
},
{
"from": {
"name": "Kristine",
"id": "1179239"
},
"message": "bija ideāls! Paldies Prāta vētrai un maniem mīļ",
"updated_time": "2013-06-09T15:20:50+0000",
"id": "10200519756813"
},
{
"from": {
"name": "Kristine ",
"id": "1179089"
},
"message": "Mīļie, takā es pazaudēju savu telefonu :( , man nomainijās nr. Lūdzu sūtiet man savējos un esējo :*",
"updated_time": "2013-05-07T19:50:00+0000",
"id": "121433892"
},
{
"from": {
"name": "Kristine",
"id": "1179589"
},
"message": "nepacietīgs pūlis\n brēc, un rokām plātās baigi.\n jo katrs jau zin kā labāk vaj’g",
"updated_time": "2013-02-01T14:40:26+0000",
"id": "463167214"
},
{
"from": {
"name": "Kristine",
"id": "11523089"
},
"message": "Manas jūtas pret dažiem cilvēkiem nav iespējams izteikt vārdos.. Tās var izteikt tikai ar lāpstu, cirvi vai kaut ko tamlīdzīgu... :D",
"updated_time": "2013-01-17T21:31:59+0000",
"id": "454819157"
}
],
"paging": {
"previous": "https://graph.facebook.com/1179523089/statuses?limit=5&fields=from,message,updated_time&since=1375260192&__paging_token=10200845330233771",
"next": "https://graph.facebook.com/1179523089/statuses?limit=5&fields=from,message,updated_time&until=1358458319&__paging_token=4548195341157"
}
}
}
],
"paging": {
"next": "https://graph.facebook.com/100000425773779/friends?limit=2&fields=statuses.limit(5).fields(from,message,updated_time)&offset=2&__after_id=1179523089"
}
}
}
我需要得到这些值:
"from": {
"name": "Maria ",
"id": "113421"
},
"message": "I miss kitkat ice-cream!:(",
"updated_time": "2010-06-06T16:46:13+0000",
"id": "10231545"
然后将它们存储在哈希图中......如果有人能帮助解决这个问题,那就太好了。这是无法正常工作的代码片段。
package com.androidhive.jsonparsing;
import java.util.ArrayList;
import java.util.HashMap;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.androidhive.jsonparsing.R;
import com.androidhive.jsonparsing.R.id;
import com.androidhive.jsonparsing.R.layout;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
public class AndroidJSONParsingActivity extends ListActivity {
// url to make request
private static String url = "https://graph.facebook.com/100000425773779?fields=friends.limit(1).fields(statuses.limit(5).fields(from,message,updated_time))?access_token=CAACEdEose0cBAJvWFqIXsQXvJvN7mZBHDn6g3ocW4HvfKZCl8JfSkeDvdQNVnVO0UyM297pcM1SlecH613j4NT1KZBCZAAG7L4hTMY7yhZCQRLwhYzHCM6zZAi3ZCwA48JXoJH31QInRO5hjWTyTFEHVL8ao7CRJVc4OLZAooqTQlgZDZD";
// JSON Node names
private static final String TAG_GDATA = "data";
private static final String TAG_DATA = "data";
private static final String TAG_STATUSES = "statuses";
private static final String TAG_NAME = "name";
private static final String TAG_FROM = "from";
private static final String TAG_UPDATE = "updated_time";
private static final String TAG_ID = "id";
private static final String TAG_FRIENDS = "friends";
private static final String TAG_MESSAGE = "message";
// contacts JSONArray
JSONArray contacts = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Hashmap for ListView
ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();
// Creating JSON Parser instance
JSONParser jParser = new JSONParser();
// getting JSON string from URL
JSONObject json = jParser.getJSONFromUrl(url);
//Here starts the MESS
try {
// Getting Array of Contacts
JSONObject arrfriends = json.getJSONObject(TAG_FRIENDS);
JSONObject genData = arrfriends.getJSONObject(TAG_GDATA);
JSONArray generalData = ;
for(int i=0; i < contacts.length(); i++) { // Loop over each each row
JSONObject row = contacts.getJSONObject(i); // Get row object
JSONObject c = row.getJSONObject(TAG_DATA);
for(int j=0; j < c.length(); j++){
JSONObject from = c.getJSONObject(TAG_FROM);
String name = from.getString(TAG_NAME);
String id = from.getString(TAG_ID);
String message = c.getString(TAG_MESSAGE);
String update = c.getString(TAG_UPDATE);
String mId = c.getString(TAG_ID);
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(TAG_NAME, name);
map.put(TAG_ID, id);
map.put(TAG_MESSAGE, message);
map.put(TAG_UPDATE, update);
map.put(TAG_ID, mId);
// adding HashList to ArrayList
contactList.add(map);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
/**
* Updating parsed JSON data into ListView
* */
ListAdapter adapter = new SimpleAdapter(this, contactList,
R.layout.list_item,
new String[] { TAG_NAME, TAG_MESSAGE, TAG_UPDATE }, new int[] {
R.id.name, R.id.email, R.id.mobile });
setListAdapter(adapter);
// selecting single ListView item
ListView lv = getListView();
// Launching new screen on Selecting Single ListItem
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String name = ((TextView) view.findViewById(R.id.name)).getText().toString();
String cost = ((TextView) view.findViewById(R.id.email)).getText().toString();
String description = ((TextView) view.findViewById(R.id.mobile)).getText().toString();
// Starting new intent
Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
in.putExtra(TAG_NAME, name);
in.putExtra(TAG_MESSAGE, cost);
in.putExtra(TAG_UPDATE, description);
startActivity(in);
}
});
}
}