【问题标题】:Parsing JSON String in Android Studio在 Android Studio 中解析 JSON 字符串
【发布时间】:2021-10-23 11:16:49
【问题描述】:

我正在尝试将字符串转换为 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 kotlin parsing


    【解决方案1】:

    您尝试解析的 JSON 似乎不是 JSON 对象(即 {...}),而仅仅是 JSON 字符串(即 "..."),因为引号似乎已转义(即 \" 而不是 @987654324 @)。

    例如,这是一个有效的 JSON 字符串,但它不是有效的 JSON 对象

    "{\"data\":[{\"temperaturaussen\":12,\"feuchtaussen\":77.41}]}"
    

    虽然这是一个有效的 JSON 对象:

    {"data":[{"temperaturaussen":12,"feuchtaussen":77.41}]}
    

    【讨论】:

      【解决方案2】:

      试试下面的代码

      try {
          val dataJson = new JSONObject(fullJson)
      } catch (e: JSONException) {
          Log.e("JSON Parser", "Error parsing data $e")
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-02
        相关资源
        最近更新 更多