Arrays 将json对象解析为android
我正在尝试将这个对象列表从json加载到android中。 它是json文件Arrays 将json对象解析为android,arrays,object,Arrays,Object,我正在尝试将这个对象列表从json加载到android中。 它是json文件 {"cofee":[{"ID":"1","name":"top1"},{"ID":"2","name":"top2"}]} 我使用这个片段加载json数组 @SuppressLint("NewApi") public class east extends Fragment { ListView list; TextView id; TextView name; Butt
{"cofee":[{"ID":"1","name":"top1"},{"ID":"2","name":"top2"}]}
我使用这个片段加载json数组
@SuppressLint("NewApi")
public class east extends Fragment {
ListView list;
TextView id;
TextView name;
Button Btngetdata;
ArrayList<HashMap<String, String>> oslist = new ArrayList<HashMap<String, String>>();
//URL to get JSON Array
private static String url = "http://url.com/east.php";
//JSON Node Names
private static final String TAG_ARRAY = "coffee";
private static final String TAG_ID = "ID";
private static final String TAG_NAME = "name";
JSONArray coffee = null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.east_fragment, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
oslist = new ArrayList<HashMap<String, String>>();
Btngetdata = (Button)getView().findViewById(R.id.getdata);
Btngetdata.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new JSONParse().execute();
}
});
}
private class JSONParse extends AsyncTask<String, String, JSONObject> {
private ProgressDialog pDialog;
JsonParser jParser = new JsonParser();
private JSONObject json;
@Override
protected void onPreExecute() {
super.onPreExecute();
name = (TextView)getView().findViewById(R.id.name);
id = (TextView)getView().findViewById(R.id.id);
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage("Getting Data ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected JSONObject doInBackground(String... args) {
// Getting JSON from URL
json = jParser.getJSONFromUrl(url);
return json;
}
@Override
protected void onPostExecute(JSONObject json) {
pDialog.dismiss();
try {
// Getting JSON Array from URL
coffee = json.getJSONArray(TAG_ARRAY);
for(int i = 0; i < coffee.length(); i++){
JSONObject c = coffee.getJSONObject(i);
// Storing JSON item in a Variable
String ID = c.getString(TAG_ID);
String name = c.getString(TAG_NAME);
// Adding value HashMap key => value
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_ID, ID);
map.put(TAG_NAME, name);
oslist.add(map);
list = (ListView)getView().findViewById(R.id.listView1);
ListAdapter adapter = new SimpleAdapter(getActivity(), oslist,
R.layout.list_item,
new String[] { TAG_ID, TAG_NAME }, new int[] {
R.id.id, R.id.name});
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getActivity(), "You Clicked at "+oslist.get(+position).get("name"), Toast.LENGTH_SHORT).show();
}
});
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
应用程序很容易连接到服务器,但我是新手,不知道为什么它无法加载json arry “咖啡没有价值”
- 请检查您的json李>
- 您可以在以下位置检查Json
- 如果它正是JSON的类型,则检查代码或使用
cofee
但代码中拼写为coffee
?看起来你的jason有cofee
,而不是coffee
。我真傻。这就是json数组中的拼写错误。谢谢各位
03-01 22:23:04.799: W/System.err(3348): org.json.JSONException: No value for coffee
03-01 22:23:04.809: W/System.err(3348): at org.json.JSONObject.get(JSONObject.java:354)
03-01 22:23:04.809: W/System.err(3348): at org.json.JSONObject.getJSONArray(JSONObject.java:548)
03-01 22:23:04.809: W/System.err(3348): at com.mmmmmm.slidingmenu.slidinglist.east$JSONParse.onPostExecute(east.java:109)
03-01 22:23:04.809: W/System.err(3348): at com.mmmmmm.slidingmenu.slidinglist.east$JSONParse.onPostExecute(east.java:1)
03-01 22:23:04.809: W/System.err(3348): at android.os.AsyncTask.finish(AsyncTask.java:631)
03-01 22:23:04.809: W/System.err(3348): at android.os.AsyncTask.access$600(AsyncTask.java:177)
03-01 22:23:04.809: W/System.err(3348): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
03-01 22:23:04.809: W/System.err(3348): at android.os.Handler.dispatchMessage(Handler.java:99)
03-01 22:23:04.809: W/System.err(3348): at android.os.Looper.loop(Looper.java:213)
03-01 22:23:04.809: W/System.err(3348): at android.app.ActivityThread.main(ActivityThread.java:5225)
03-01 22:23:04.809: W/System.err(3348): at java.lang.reflect.Method.invokeNative(Native Method)
03-01 22:23:04.809: W/System.err(3348): at java.lang.reflect.Method.invoke(Method.java:525)
03-01 22:23:04.809: W/System.err(3348): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
03-01 22:23:04.809: W/System.err(3348): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
03-01 22:23:04.809: W/System.err(3348): at dalvik.system.NativeStart.main(Native Method)