Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中处理JSON_Android - Fatal编程技术网

在android中处理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

您好,我是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=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"}