【问题标题】:Android: Json string with spaces gives "Unterminated object at" exceptionAndroid:带空格的 Json 字符串给出“未终止的对象”异常
【发布时间】:2011-09-06 22:49:09
【问题描述】:

每当我有一个带有空格的 Json 字符串对象时,我都会收到以下错误。

Java:

String jString = getResources().getString(R.string.event);
JSONObject object = new JSONObject(jString);

json:

<resources>
    <string name="event">
        {"Array":[{"Name":"One two three"},{"Name":"Two"},{"Name":"Three"}]}
    </string>
</resources>

我收到以下消息:

09-06 22:35:08.214: WARN/System.err(1079): org.json.JSONException: Unterminated object at character 21 of {Array:[{Name:One two three},{Name:Two},{Name:Three}]} 

这没有任何问题:

<resources>
    <string name="event">
        {"Array":[{"Name":"One"},{"Name":"Two"},{"Name":"Three"}]}
    </string>
</resources>

我引用错了吗?

编辑:阅读我自己的帖子时,我注意到错误消息在字符串对象值周围没有任何引号。因此,我将 xml 字符串中的“更改为 \”,它工作正常。知道如何让它不删除任何引号吗?

【问题讨论】:

  • 删除空格并检查一次数组名

标签: android json


【解决方案1】:

阅读我自己的帖子后,我注意到错误消息在字符串对象值周围没有任何引号。所以我将xml字符串中的“改为\”,效果很好。

【讨论】:

    【解决方案2】:

    尝试将其包装在 CDATA 块中。这应该可以防止任何混淆。

    <resources>
        <string name="event"><![CDATA[
            {"Array":[{"Name":"One two three"},{"Name":"Two"},{"Name":"Three"}]}
        ]]></string>
    </resources>
    

    【讨论】:

      【解决方案3】:

      JSON 中的空格会产生此问题。尝试以下 json {"数组":[{"名称":"一二三"},{"名称":"二"},{"名称":"三"}]}

      【讨论】:

      • 如果 json 是从服务器提供的,并且值之间包含空格,我们该怎么办?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-01
      • 1970-01-01
      • 2021-06-14
      • 2011-04-27
      • 2014-11-01
      相关资源
      最近更新 更多