【问题标题】:JSON Deserializing for iOSiOS 的 JSON 反序列化
【发布时间】:2011-12-22 08:44:54
【问题描述】:

我正在尝试为我正在编写的 iOS 应用反序列化 JSON 字符串。但是,我的应用程序一直挂在我试图阅读的提要中双引号的“\”转义序列上。什么是删除该序列以便我可以正确解析提要的快速方法? (提要来自我在服务器端的 Django 应用程序。)

这是我的 json 字符串:

[{\"pk\": 4161, \"model\": \"news.article\", \"fields\": {\"date_live\": \"2011-11-03 00:00:01\", \"date_added\": \"2011-11-03 03:10:59\", \"date_modified\": \"2011-11-03 03:10:59\", \"slug\": \"thursday-feature-backup-comic\", \"title\": \"THURSDAY FEATURE --> Backup Comic\"}}

您会注意到我所有的“节点”都有引号的“\”转义序列。有什么想法吗?

在这里提前感谢您的任何帮助。

L.

【问题讨论】:

  • 你是如何制作这个提要的?
  • 这是输出的实际样子吗?或者那是一个字符串文字?如果它是字符串文字,则 '\' 字符实际上并不存在。当字符串打印到控制台时,您只会看到它们。如果它们在那里,那么您的 JSON 字符串格式不正确。您是在使用JSONkit 之类的东西还是自己解析 JSON?
  • 如果我的回答解决了您的问题,请告诉我。
  • @DanielRoseman 我正在使用 Python / Django 生成提要。我运行一个查询并使用 simplejson 将输出格式化为 JSON 字符串。

标签: ios django json serialization deserialization


【解决方案1】:

如果你想在 python 中移除转义:

import re, json
myjson = re.sub(r"\\", "", "[{\"pk\": 4161, \"model\": \"news.article\", \"fields\": {\"date_live\": \"2011-11-03 00:00:01\", \"date_added\": \"2011-11-03 03:10:59\", \"date_modified\": \"2011-11-03 03:10:59\", \"slug\": \"thursday-feature-backup-comic\", \"title\": \"THURSDAY FEATURE --> Backup Comic\"}}]")
myjson = json.loads(myjson) # will decode json

但是如果你想从 javascript 中移除转义:

myjson = "[{\"pk\": 4161, \"model\": \"news.article\", \"fields\": {\"date_live\": \"2011-11-03 00:00:01\", \"date_added\": \"2011-11-03 03:10:59\", \"date_modified\": \"2011-11-03 03:10:59\", \"slug\": \"thursday-feature-backup-comic\", \"title\": \"THURSDAY FEATURE --> Backup Comic\"}}]";
myjson = eval(myjson.replace(/\\/, "")); // will encode json

注意:您忘记了字符串末尾的 ]。至少我在尝试评估它时遇到了错误。我把 ] 放在最后,然后 eval 起作用了。

【讨论】:

  • 感谢吉尔赫姆!我弄清楚了问题所在。我在 iPhone 上的 json 解析器在我的字符串中的第一个之后的“节点”上窒息。我必须解决这个问题。这是一个非常有帮助的答案。
猜你喜欢
  • 2014-03-23
  • 2013-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多