Java 如何从JSONObject检索Id
我在从JSONObject检索Id并将其传递给字符串以记录特定谜题的Id时遇到问题,但行字符串idString=obj.getString(“Id”) “我得到org.json.JSONException:Id没有值” 我通过调用这个类中的服务器来获取这些信息,该服务器检查玩家的用户名和密码Java 如何从JSONObject检索Id,java,android,arrays,json,Java,Android,Arrays,Json,我在从JSONObject检索Id并将其传递给字符串以记录特定谜题的Id时遇到问题,但行字符串idString=obj.getString(“Id”) “我得到org.json.JSONException:Id没有值” 我通过调用这个类中的服务器来获取这些信息,该服务器检查玩家的用户名和密码 import android.os.AsyncTask; import android.text.format.Time; import android.util.Log; public class Ge
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;
}
}
}
}
导入android.os.AsyncTask;
导入android.text.format.Time;
导入android.util.Log;
公共类GetTodaysPuzzle在RetrieveHttpData上实现{
公共字符串GetTodaysPuzzle(字符串mUserName,字符串mPassword)
{
RetrieveHTTPData GetTodayspuzzle=新的RetrieveHTTPData(此);
返回GetTodayspuzzle.GetResponseData(“urlString”+mUserName+”&password=“+mPassword”);
}
@凌驾
公用void onRetrieveTaskCompleted(字符串httpData){
Log.i(“服务器响应”,httpData);
}
类GetTodaysPuzzleTask扩展了AsyncTask{
@凌驾
受保护的布尔doInBackground(字符串…参数){
//从服务器获取响应
字符串json=GetTodaysPuzzle(参数[0],参数[1]);
//检查是否返回了拼图
if(json.contains(“请求无效”))
{
返回false;
}
尝试
{
//计算今天的日期以设置wordsearch日期
今天的时间=新时间();
今天;
字符串formattedDate=Dates.ConvertUStoUK(今天.year+“-”
+(今天.月+1)+“-”+今天.月日);
//创建文字搜索
WordSearch=WordSearch.CreateWordSearch(json,
形成日期);
if(wordSearch==null)
{
返回false;
}
//将wordsearch保存到集合
添加(wordSearch);
//WordSearchDatabase.Save();
返回true;
}
捕获(例外e)
{
Log.e(“GetTodaysPuzzleTask”,e.getMessage());
返回false;
}
}
}
}
然后将所有信息存储到Wordsearch类中的JSONArray中
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;
}
}
}
import java.util.ArrayList;
导入java.util.List;
导入org.json.JSONArray;
导入org.json.JSONObject;
公共类词汇搜索{
公共字符串Id;
公共字符串日期;
公共词汇表;
公开信[]信件;
公共最终整数行数;
公开决赛总人数;
公共智力得分=-1;
私有布尔containsSolution=false;
公共布尔值canbesubmited=true;
私有布尔完成=假;
private=false;
公共静态WordSearch CreateWordSearch(字符串json,字符串日期)
{
List listOfWords=new ArrayList();
List listOfRows=新的ArrayList();
尝试
{
//从JSON字符串创建JSON对象
JSONObject obj=新的JSONObject(json);
//取得身份证
String idString=obj.getString(“Id”);
//GetWords和Puzzle作为JSON数组
JSONArray wordsArray=obj.getJSONArray(“Words”);
JSONArray-puzzarray=obj.getJSONArray(“网格”);
//解析字数组
for(int i=0;i
这是我第一次在Android中使用API服务器和JSONObject,因此非常感谢您的帮助。谢谢。您收到此错误是因为您的响应JSON没有“Id”作为键,它只有“谜题”,如您所见:
{
"Puzzle": {
"Id": "8fb25209-863a-410b-a440-b5b57a903ee1",
"Words": ["CHATEAUX", ...],
"Grid": ["TLIOFSHTRC", ...]
}
}
您需要首先获取“拼图”对象,然后才能从该对象获取“Id”
JSONObject obj = new JSONObject(json);
JSONObject puzzle = obj.getJSONObject("Puzzle");
String idString = puzzle.getString("Id");
....
您之所以会出现此错误,是因为您的响应JSON没有“Id”作为键,正如您所看到的,它只有“谜题”:
{
"Puzzle": {
"Id": "8fb25209-863a-410b-a440-b5b57a903ee1",
"Words": ["CHATEAUX", ...],
"Grid": ["TLIOFSHTRC", ...]
}
}
您需要首先获取“拼图”对象,然后才能从该对象获取“Id”
JSONObject obj = new JSONObject(json);
JSONObject puzzle = obj.getJSONObject("Puzzle");
String idString = puzzle.getString("Id");
....
您之所以会出现此错误,是因为您的响应JSON没有“Id”作为键,正如您所看到的,它只有“谜题”:
{
"Puzzle": {
"Id": "8fb25209-863a-410b-a440-b5b57a903ee1",
"Words": ["CHATEAUX", ...],
"Grid": ["TLIOFSHTRC", ...]
}
}
您需要首先获取“拼图”对象,然后才能从该对象获取“Id”
JSONObject obj = new JSONObject(json);
JSONObject puzzle = obj.getJSONObject("Puzzle");
String idString = puzzle.getString("Id");
....
您之所以会出现此错误,是因为您的响应JSON没有“Id”作为键,正如您所看到的,它只有“谜题”:
{
"Puzzle": {
"Id": "8fb25209-863a-410b-a440-b5b57a903ee1",
"Words": ["CHATEAUX", ...],
"Grid": ["TLIOFSHTRC", ...]
}
}
您需要首先获取“拼图”对象,然后才能从该对象获取“Id”
JSONObject obj = new JSONObject(json);
JSONObject puzzle = obj.getJSONObject("Puzzle");
String idString = puzzle.getString("Id");
....
Id在拼图元素中,所以应该是
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");
Id在拼图元素中,所以应该是
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");
Id在拼图元素中,所以应该是
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");
Id在拼图元素中,所以应该是
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");