json - 在 Android Studio 中解析 JSON 字符串
问题描述
我试图将字符串转换为 JSON 对象,但我收到以下错误消息
E/JSON Parser: Error parsing data org.json.JSONException: Value {"data":[{"temperaturaussen":12,"feuchtaussen":77.41,"temperaturbadezimmer":21}]} of type java.lang.String cannot be converted to JSONObject
我像这样得到我的数据
val url = URL("url")
val connection : URLConnection = url.openConnection()
connection.connect()
val bufferedInputStream = BufferedInputStream(connection.getInputStream())
val bufferedReader : BufferedReader = bufferedInputStream.bufferedReader(Charsets.UTF_8)
val stringBuffer = StringBuffer()
for (line in bufferedReader.readLines()){
stringBuffer.append(line)
}
bufferedReader.close()
val fullJson : String = stringBuffer.toString()
我知道来自 url 的 Json 字符串是有效的,因为我在https://jsonformatter.curiousconcept.com/上检查了它,看起来像这样
"{\"data\":[{\"temperaturaussen\":12,\"feuchtaussen\":77.41}]}"
但是为什么当我尝试将其转换为 JSON 时会收到此错误消息?
try {
val dataJson = JSONObject(fullJson)
} catch (e: JSONException) {
Log.e("JSON Parser", "Error parsing data $e")
}
解决方案
您尝试解析的 JSON 似乎不是 JSON 对象(即{...}
),而仅仅是 JSON 字符串(即"..."
),因为引号似乎已转义(即\"
,而不是"
)。
例如,这是一个有效的 JSON 字符串,但它不是一个有效的 JSON 对象:
"{\"data\":[{\"temperaturaussen\":12,\"feuchtaussen\":77.41}]}"
虽然这是一个有效的 JSON 对象:
{"data":[{"temperaturaussen":12,"feuchtaussen":77.41}]}
推荐阅读
- javascript - 将 github javascript 库 (underline.js) 添加到我的项目中
- javascript - Python 抓取创建有效载荷 cnmv.es 并渲染 javascript
- javascript - 反应路由器链接未显示
- google-apps-script - 访问已安装 Google Add-on 的附加代码
- flutter - 如何修改当前的块状态,如添加、更新和删除?
- fluentd - 在 fluentd 中使用具有不同匹配类型的单个源
- php - 根据mysql中的日期计算多行的分钟时间差
- session - 重新加载当前页面以填充会话
- ruby-on-rails - 路由错误未初始化常量聚会
- flutter - Flutter 将数组保存到 Firebase 数据库