在 Android Studio 中解析 JSON 字符串

Parsing JSON String in Android Studio

我试图将字符串转换为 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")
    }

尝试使用下面的代码

try {
    val dataJson = new 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}]}