在android中处理JSON
您好,我是JSON新手,我想在下面检索JSON的值在android中处理JSON,android,Android,您好,我是JSON新手,我想在下面检索JSON的值 {"error":"0","uid":"160","langId":"2","rank":"1"} 我编写了一个JSONParser类,但是主活动类让我陷入了困境。下面是代码 private static final String LOGTAG = "MyActivity"; private static String JSONurl = "http://www.afroklore.org/mobile/boot.php?actn=p
{"error":"0","uid":"160","langId":"2","rank":"1"}
我编写了一个JSONParser类,但是主活动类让我陷入了困境。下面是代码
private static final String LOGTAG = "MyActivity";
private static String JSONurl = "http://www.afroklore.org/mobile/boot.php?actn=post_prov&lang=1&uid=2&prov=";
private static final String ERROR = "error";
private static final String UID = "uid";
private static final String LANGID = "langId";
private static final String RANK = "rank";
JSONArray output = null;
String id, error, langId, rank;
if (MenuActivity.status == 2) {
JSONParser jParser = new JSONParser();
JSONObject json = jParser.getJSONFromUrl(JSONurl);
try {
output = json.getJSONArray(ERROR);
for (int i = 0; i < output.length(); i++) {
JSONObject c = output.getJSONObject(i);
// Storing each json item in variable
id = c.getString(UID);
error = c.getString(ERROR);
langId = c.getString(LANGID);
rank = c.getString(RANK);
// creating new HashMap
/*
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(ERROR, error);
map.put(UID, id);
map.put(LANGID, langId);
map.put(RANK, rank);
// adding HashList to ArrayList
outputField.add(map);*/
}
} catch (JSONException e) {
e.printStackTrace();
}
}
return result;
protected void onPostExecute(String r) {
// TODO Auto-generated method stub
super.onPostExecute(result);
String msg = "Login successful";
if (MenuActivity.status == 2) {
Log.d(LOGTAG, result);
// Log.d(LOGTAG, outputField.get(ERROR));
Log.d(LOGTAG, error + " " + id + " " + langId + " " + rank);
private静态最终字符串LOGTAG=“MyActivity”;
私有静态字符串JSONurl=”http://www.afroklore.org/mobile/boot.php?actn=post_prov&lang=1&uid=2&prov=";
私有静态最终字符串ERROR=“ERROR”;
私有静态最终字符串UID=“UID”;
私有静态最终字符串LANGID=“LANGID”;
私有静态最终字符串RANK=“RANK”;
JSONArray输出=null;
字符串id,错误,langId,秩;
if(MenuActivity.status==2){
JSONParser jParser=新的JSONParser();
JSONObject json=jParser.getJSONFromUrl(JSONurl);
试一试{
output=json.getJSONArray(错误);
for(int i=0;ivalue
map.put(错误,错误);
map.put(UID,id);
地图放置(LANGID,LANGID);
地图。放置(等级,等级);
//将哈希列表添加到ArrayList
outputField.add(映射)*/
}
}捕获(JSONException e){
e、 printStackTrace();
}
}
返回结果;
受保护的void onPostExecute(字符串r){
//TODO自动生成的方法存根
super.onPostExecute(结果);
String msg=“登录成功”;
if(MenuActivity.status==2){
日志d(日志标签、结果);
//Log.d(LOGTAG,outputField.get(ERROR));
Log.d(LOGTAG,error+“”+id+“”+langId+“”+rank);
}检查json Web服务响应。它只包含一个json对象作为您提供的字符串
{"error":"0","uid":"160","langId":"2","rank":"1"}
因此,将其解析为
JSONObject json = jParser.getJSONFromUrl(JSONurl);
try {
// Storing each json item in variable
id = json.getString(UID);
error = json.getString(ERROR);
langId = json.getString(LANGID);
rank = json.getString(RANK);
//..your code here
您可以使用解析JSON字符串
在您的例子中,创建一个表示JSON参数的类,如下所示
public class Header {
///{"error":"0","uid":"160","langId":"2","rank":"1"}
private String error;
private String uid;
private String langId;
private String rank;
/**
* Gets the error.
*
* @return <tt> the error.</tt>
*/
public String getError() {
return error;
}
/**
* Sets the error.
*
* @param error <tt> the error to set.</tt>
*/
public void setError(String error) {
this.error = error;
}
/**
* Gets the uid.
*
* @return <tt> the uid.</tt>
*/
public String getUid() {
return uid;
}
/**
* Sets the uid.
*
* @param uid <tt> the uid to set.</tt>
*/
public void setUid(String uid) {
this.uid = uid;
}
/**
* Gets the langId.
*
* @return <tt> the langId.</tt>
*/
public String getLangId() {
return langId;
}
/**
* Sets the langId.
*
* @param langId <tt> the langId to set.</tt>
*/
public void setLangId(String langId) {
this.langId = langId;
}
/**
* Gets the rank.
*
* @return <tt> the rank.</tt>
*/
public String getRank() {
return rank;
}
/**
* Sets the rank.
*
* @param rank <tt> the rank to set.</tt>
*/
public void setRank(String rank) {
this.rank = rank;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "Header [error=" + error + ", uid=" + uid + ", langId=" + langId
+ ", rank=" + rank + "]";
}
}
您需要gson-jar二进制文件才能运行此代码
- 下载
- 在项目文件夹中创建名为“libs”的资源文件夹
- 将gson jar复制到此文件夹并添加到构建路径
- 现在你可以走了
{,}
表示JSONobject
,[,]
表示JSONArray
{"error":"0","uid":"160","langId":"2","rank":"1"}
您不能对JSONobject
使用for循环,它用于JSONArray
你可以检查一下
这里的问题是区别,但在解决方案中使用JSON
要了解更多信息,请查看此项。
我希望它能帮助您。到底是什么问题?。有错误吗?“我写了一个JSONParser”为什么?Android已经有了一个:这是完整的json还是数组的一个元素?你可能会发现这个链接很有用:嗨,它仍然返回空值values@nnanna:这是您发出post请求的完整url?因为当我试图在浏览器中检查此url时,Web服务仅返回{“error”:“1”,“error_msg”:“Empty data posted”}data{“error”:“1”,“error_msg:“Empty data posted”}表示用户名或密码无效,您需要注册才能获得由写入的响应me@nnanna:使用Log.d(LOGTAG,error+“”+id+“”+langId+“”+rank);在doInBackground中检查是否正在获取数据
{"error":"0","uid":"160","langId":"2","rank":"1"}