首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从JSONObject检索Id

如何从JSONObject检索Id
EN

Stack Overflow用户
提问于 2015-04-17 01:07:25
回答 2查看 8.8K关注 0票数 0

我在从JSONObject中检索Id并将其传递给一个字符串以记录该播放器的Id时遇到了问题,但是在字符串idString =obj.getString(“Id”)上;

“我得到了org.json.JSONException: Id没有价值”

我是通过调用这个类中的服务器来获取这个信息的,该服务器检查播放机的用户名和密码。

代码语言:javascript
复制
import android.os.AsyncTask;
import android.text.format.Time;
import android.util.Log;

public class GetTodaysPuzzle implements OnRetrieveHttpData {

    public String GetTodaysPuzzle(String mUserName, String mPassword)
    {
        RetrieveHTTPData GetTodayspuzzle = new RetrieveHTTPData(this);
        return GetTodayspuzzle.GetResponseData("urlString" + mUserName + "&password=" + mPassword);
    }

    @Override
    public void onRetrieveTaskCompleted(String httpData) {
        Log.i("Server Response", httpData);
    }

    class GetTodaysPuzzleTask extends AsyncTask<String, String, Boolean> {

        @Override
        protected Boolean doInBackground(String... params) {
            // Get response from server
            String json = GetTodaysPuzzle(params[0], params[1]);

            // Check if a puzzle was returned
            if (json.contains("The request is invalid"))
            {
                return false;
            }

            try
            {
                // Calculate today's date in order to set wordsearch date
                Time today = new Time();
                today.setToNow();
                String formattedDate = Dates.ConvertUStoUK(today.year + "-"
                        + (today.month + 1) + "-" + today.monthDay);

                // Create wordsearch
                WordSearch wordSearch = WordSearch.CreateWordSearch(json,
                        formattedDate);

                if (wordSearch == null)
                {
                    return false;
                }

                // Save wordsearch to collection
                WordSearchDatabase.Add(wordSearch);
                // WordSearchDatabase.Save();
                return true;
            }
            catch (Exception e)
            {
                Log.e("GetTodaysPuzzleTask", e.getMessage());
                return false;
            }
        }
    }

}

然后将所有信息存储到Wordsearch类中的JSONArrays中。

代码语言:javascript
复制
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONObject;

public class WordSearch {

    public String               Id;
    public String               Date;
    public List<Word>           Words;
    public Letter[]             Letters;
    public final int            NUM_OF_ROWS;
    public final int            NUM_OF_COLS;
    public int                  Score               = -1;

    private boolean             containsSolution    = false;
    public boolean              canBeSubmitted      = true;
    private boolean             complete            = false;
    private boolean             submitted           = false;


    public static WordSearch CreateWordSearch(String json, String date)
    {
        List<Word> listOfWords = new ArrayList<Word>();
        List<String> listOfRows = new ArrayList<String>();

        try
        {
            // Create a JSON Object from JSON string
            JSONObject obj = new JSONObject(json);

            // Get Id
            String idString = obj.getString("Id");

            // GetWords & Puzzle as JSON Arrays
            JSONArray wordsArray = obj.getJSONArray("Words");
            JSONArray puzzleArray = obj.getJSONArray("Grid");

            // Parse Words array
            for (int i = 0; i < wordsArray.length(); i++)
            {
                String name = wordsArray.getString(i);
                Word word = new Word(name);
                listOfWords.add(word);
            }

            // Parse Puzzle
            for (int k = 0; k < puzzleArray.length(); k++)
            {
                String puzzle = puzzleArray.getString(k);
                listOfRows.add(puzzle);
            }

            // Create WordSearch
            return new WordSearch(idString, date, listOfWords, listOfRows,
                    false);
        }
        catch (Exception e)
        {
            e.printStackTrace();
            return null;
        }
    }
}

这是我第一次在Android中使用API服务器和JSONObject,因此,任何帮助都是非常感谢的。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-17 01:16:48

您得到这个错误是因为您的响应JSON没有"Id“作为键,它只有”困惑“,如您所见:

代码语言:javascript
复制
{
   "Puzzle": {
       "Id": "8fb25209-863a-410b-a440-b5b57a903ee1",
       "Words": ["CHATEAUX", ...],
       "Grid": ["TLIOFSHTRC", ...]
   }
}

您需要首先获得“困惑”对象,然后才能从该对象获得"Id“。

代码语言:javascript
复制
JSONObject obj = new JSONObject(json);
JSONObject puzzle = obj.getJSONObject("Puzzle");
String idString = puzzle.getString("Id");
....
票数 3
EN

Stack Overflow用户

发布于 2015-04-17 01:20:27

Id在益智元素中,所以它应该是

代码语言:javascript
复制
JSONObject obj = new JSONObject(json);

//get puzzle object
JSONObject puzzle = obj.getJSONObject("Puzzle");
// Get Id
String idString = puzzle.getString("Id");

// GetWords & Puzzle as JSON Arrays
JSONArray wordsArray = puzzle.getJSONArray("Words");
JSONArray puzzleArray = puzzle.getJSONArray("Grid");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29688516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档