0

こんにちは、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);

}

4

3 に答える 3

1

ここでjsonWebサービスの応答を確認してください。提供された文字列としてjsonオブジェクトが1つだけ含まれています。

{"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
于 2012-06-29T08:30:51.637 に答える
1

GSONを使用して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 + "]";
    }




}

次に、必要なJSON文字列を2行で解析します

String jSonData = "{\"error\":\"0\",\"uid\":\"160\",\"langId\":\"2\",\"rank\":\"1\"}";
Header header = new Gson().fromJson(jSonData, Header.class);
System.out.println("Header : "+header);

このコードを実行するには、gsonjarバイナリが必要です。

  • GSONJARをダウンロードする
  • プロジェクトフォルダに「libs」という名前のリソースフォルダを作成します
  • gson jarをこのフォルダーにコピーし、ビルドパスに追加します
  • 今、あなたは行ってもいいです
于 2012-06-29T09:15:39.223 に答える
0

{ , }を表しJSONobject[ ,]を表しますJSONArray

{"error":"0","uid":"160","langId":"2","rank":"1"}

forループを取ることはできませんJSONobject、それはのために使用しますJSONArray

あなたはこのリンクをチェックすることができます、

ここでの質問は違いですが、そのソリューションではJSONを使用してください。

詳細については、このリンクを確認してください。お役に立てば幸いです。

于 2012-06-29T09:38:45.377 に答える