gpt4 book ai didi

java - JSON 解析没有值(value)

转载 作者:行者123 更新时间:2023-12-02 06:46:50 25 4
gpt4 key购买 nike

当我尝试解析这个 JSON 时,我似乎遗漏了一些东西。我继续收到“No Value for item JSON”错误。 (参见下面的 logcat)。

这是我从应用程序引擎数据存储区提取的 JSON:

{"items":[{"description":"payment confirmed","emailAddress":"abc@aqw.com","id":"Fri Aug 30 17:20:35 EDT 2013","nameFirst":"Bill","nameLast":"Sanders","phone":"5555555555","state":"KS","streetAddress":"123 Rick Dr","zipCode":"44444","kind":"contactinfoendpoint#resourcesItem"},{"description":"payment confirmed","emailAddress":"qwe@msn.com","id":"Fri Aug 30 17:21:37 EDT 2013","nameFirst":"Frank","nameLast":"Lloyd","phone":"5554567896","state":"KY","streetAddress":"999 Rock St","zipCode":"44555","kind":"contactinfoendpoint#resourcesItem"}],"kind":"contactinfoendpoint#resources","etag":"\"NiDXI3T89oRrAPGJAhgGQje1Z0w/z0W4p01mjHc5cNgcOt3Kb_1xo8E\""}

当我运行此代码时,我在 LOGCAT 中得到此信息,并且我的布局充气器为空白:

08-31 11:11:37.470: E/log_tag(15026): Error parsing data org.json.JSONException: No value for item

以下是 Activity 的代码:

public class FinderActivity extends ListActivity   {


private static final String TAG_ID = "id";
private static final String TAG_FIRSTNAME = "nameFirst";
private static final String TAG_LASTNAME = "nameLast";
private static final String TAG_EMAIL = "emailAddress";
private static final String TAG_ADDRESS = "address";
private static final String TAG_STATE = "state";

private static final String TAG_PHONE = "phone";
JSONArray contacts = null;

ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

new EndpointsTask().execute(getApplicationContext());

}

public class EndpointsTask extends AsyncTask<Context, Integer, Long> {

public Long doInBackground(Context... contexts) {

Contactinfoendpoint.Builder endpointBuilder = new Contactinfoendpoint.Builder(
AndroidHttp.newCompatibleTransport(),
new JacksonFactory(),
new HttpRequestInitializer() {
public void initialize(HttpRequest httpRequest) { }
});
Contactinfoendpoint endpoint = CloudEndpointUtils.updateBuilder(
endpointBuilder).build();

try {

// final TextView detail = (TextView)findViewById(R.id.textView100);

String apples = endpoint.listContactInfo().execute().toString();

JSONObject jObject = new JSONObject(apples);

try{
//Get the element that holds the earthquakes ( JSONArray )
JSONArray contacts = jObject.getJSONArray("item");

for(int i = 0; i < contacts.length(); i++){
JSONObject c = contacts.getJSONObject(i);

// Storing each json item in variable
String id = c.getString(TAG_ID);
String nameFirst = c.getString(TAG_FIRSTNAME);
String nameLast = c.getString(TAG_LASTNAME);
String email = c.getString(TAG_EMAIL);
String address = c.getString(TAG_ADDRESS);
String phone = c.getString(TAG_PHONE);

// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();

// adding each child node to HashMap key => value
map.put(TAG_ID, id);
map.put(TAG_FIRSTNAME, nameFirst);
map.put(TAG_EMAIL, email);
map.put(TAG_PHONE, phone);

// adding HashList to ArrayList
contactList.add(map);

}

}catch(JSONException e) {
Log.e("log_tag", "Error parsing data "+e.toString());
}

ListAdapter adapter = new SimpleAdapter(FinderActivity.this, contactList,
R.layout.main,
new String[] { TAG_FIRSTNAME, TAG_EMAIL, TAG_PHONE }, new int[] {
R.id.name, R.id.email, R.id.mobile });

setListAdapter(adapter);

// selecting single ListView item
ListView lv = getListView();

} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return (long) 0;
}


}

最佳答案

您的对象名称不是item而是items

使用下面的代码获取元素

JSONObject jsonObj = new JSONObject(str);
JSONArray jsonArr = jsonObj.getJSONArray("items");

for(int i =0 ; i<jsonArr.length() ;i++ ){
JSONObject jsonObj1 = jsonArr.getJSONObject(i);

System.out.println();
System.out.println((i+1)+" ==========JSON OBJECT IS :========== ");

Iterator<String> iter = jsonObj1.keys();
while(iter.hasNext()){
String key = iter.next();
System.out.println(key + " : " + jsonObj1.get(key));


}
}

输出:

1 ==========JSON OBJECT IS :========== 
streetAddress : 123 Rick Dr
id : Fri Aug 30 17:20:35 EDT 2013
phone : 5555555555
nameLast : Sanders
nameFirst : Bill
description : payment confirmed
zipCode : 44444
state : KS
emailAddress : abc@aqw.com
kind : contactinfoendpoint#resourcesItem

2 ==========JSON OBJECT IS :==========
streetAddress : 999 Rock St
id : Fri Aug 30 17:21:37 EDT 2013
phone : 5554567896
nameLast : Lloyd
nameFirst : Frank
description : payment confirmed
zipCode : 44555
state : KY
emailAddress : qwe@msn.com
kind : contactinfoendpoint#resourcesItem

关于java - JSON 解析没有值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18549631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com