现在已经工作了几个小时了,不太确定我应该如何对我的测试阵列进行排序。我已经尝试了一些我见过的不同选项,这个是关于最简单的实现到我的项目中。任何可能帮助我克服这个驼峰的建议或想法?
来自php的JSON数组
{
"Questions": {
"0001": {
"Title": "What is Stackoverflow",
"Answer": "C",
"User": "testUSER",
"Date": "0000-00-00",
"Used": "0"
},
"0002": {
"Title": "What is Stackoverflow",
"Answer": "C",
"User": "testUSERb",
"Date": "0000-00-00",
"Used": "1"
},
"0003": {
"Title": "What is Stackoverflow",
"Answer": "C",
"User": "testUSERc",
"Date": "0000-00-00",
"Used": "0"
}
},
"Count-start": 1,
"Count-end": 3
}
使用:0 =未使用1 =用户已使用。我将使用它来确定是否向用户显示问题和答案。
助手类
public JSONObject query(){
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000);
HttpResponse response;
JSONObject json = new JSONObject();
HttpPost post = new HttpPost(QUERY_LINK);
post.setHeader("json", json.toString());
StringEntity se;
try {
se = new StringEntity(json.toString());
se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json"));
post.setEntity(se);
response = client.execute(post);
if (response != null) {
InputStream in = response.getEntity().getContent();
a = convertStreamToString(in);
JSONObject check = new JSONObject(a);
return check;
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return json;
}
主要活动
private ArrayList<ListHelper> GetSearchResults(){
JSONObject getJSON = new Helper().query();
JSONArray jArrayObject = new JSONArray();
jArrayObject.put(getJSON);
int end = 0,start = 0;
String title, answer, user, used;
ListHelper sr = new ListHelper();
ArrayList<ListHelper> results = new ArrayList<ListHelper>();
JSONObject offerObject = null;
try {
offerObject = getJSON.getJSONObject("Questions");
start = offerObject.getInt("Count-start");
end = offerObject.getInt("Count-end");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(int a = start; a < end; a = a++) {
try {
JSONObject businessObject = offerObject.getJSONObject("Id");
// this is were i'm stuck, how to go about selecting each id
title = businessObject.getString("Title");
answer = businessObject.getString("Answer");
user = businessObject.getString("User");
used = businessObject.getString("Used");
sr = new ListHelper();
sr.setTitle(title);
sr.setUser(user);
sr.setUsed(used);
results.add(sr);
} catch (JSONException e1) {
e1.printStackTrace();
}
}
return results;
}
}
答案 0 :(得分:1)
您可以执行以下操作:在DecimalFormat
循环之外定义新的for
DecimalFormat myFormatter = new DecimalFormat("0000");
然后在for
循环内使用格式化程序形成id
字符串。
String id = myFormatter.format(a);
然后使用id
获取JSONObject
// this is were i'm stuck, how to go about selecting each id
JSONObject businessObject = offerObject.getJSONObject(id);
只有当您的ids
最多为4位时,上述操作才有效。您可以使用"Count-end"
值而不是使用硬编码"0000"
来使格式动态化。
如果"Questions"
对象是JSONArray,则可以避免所有这些麻烦。