java - 整数无法转换为 JSONObject
问题描述
我目前在我的异步任务中使用来自 Wikipedia api 的查询搜索来获取数据。一切正常,但维基百科查询返回一个数字作为 json 中的键,我无法以编程方式将其转换为字符串。
维基百科查询网址:维基百科查询
异步任务:
Log.i(Config.TAG, result);
String query = data.getString("query");
JSONObject pagesObj = new JSONObject(query);
String pages = pagesObj.getString("pages");
JSONObject page = new JSONObject(pages);
String pageID = (String) page.names().get(0);
String message = null;
String title = null;
if (Integer.parseInt(pageID) == -1){
title = "No User found";
message = "It seems that this User does not have a Wikipedia Article yet.";
} else {
JSONObject part = new JSONObject(pageID);
title = part.getString("title");
message = part.getString("extract");
}
错误日志:
05-09 16:38:10.650 25295-25323/org.mypackage.name W/System.err: at org.json.JSON.typeMismatch(JSON.java:111)
at org.json.JSONObject.<init>(JSONObject.java:163)
at org.json.JSONObject.<init>(JSONObject.java:176)
05-09 16:38:10.651 25295-25323/org.mypackage.name W/System.err: at org.mypackage.name.classes.GetContent.doInBackground(GetContent.java:117)
at org.mypackage.name.classes.GetContent.doInBackground(GetContent.java:26)
at android.os.AsyncTask$2.call(AsyncTask.java:333)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
05-09 16:38:10.652 25295-25323/org.mypackage.name W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
05-09 16:38:10.653 25295-25323/org.mypackage.name W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
有没有办法将给定的整数转换为字符串,甚至我的代码有问题?
先感谢您
解决方案
也许更好的方法是使用杰克逊?类似的东西
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(data);
title = node.get("query").get("pages").get(0).get("title");
message = node.get("query").get("pages").get(0).get("message")
推荐阅读
- javascript - 节点红色多上下文
- swift - Swift 4中任何类型的带有错误协议的向下转换枚举
- visual-studio - DOCKER_REGISTRY 变量未设置。默认为空字符串
- angular - Angular 2-如何将一个子组件作为另一个子组件的叠加层放置在父组件中
- publish-subscribe - 使用 grpc 和 node js 通过 HTTP 2 访问 Google Cloud Pubsub
- c++ - MacOS 上 cmake + 共享库的问题
- android - 抓取时获得空 src
- reactjs - 如何取出传递给 Hoc 函数的道具
- r - GGraph 和格式化节点
- c++ - Compiling Qt projects in Qt/MsBuild format without Qt VS Tools installed