【问题标题】:getting json data from php server with """使用 """ 从 php 服务器获取 json 数据
【发布时间】:2011-06-30 15:26:17
【问题描述】:

我的 iphone 应用从 php 服务器获取 json 数据。

2 个基本问题,只是为了确定:

1-在某些 json 数据字段中,我看到 """,这是 json 发送报价的方式吗? 我需要在 iphone 应用程序中清理它吗?还是有优雅干净的方式来跳过这件事?

2-数据是 UTF-8 格式的,我注意到如果数组中有数组,则 UTF-8 没有以正确的方式显示,它是显示代码。这是 JSON 库中的错误吗?或者有什么要与服务器端检查的?

提前致谢。

【问题讨论】:

  • 在倾向于 JSON 库或 PHP 的 json_* 函数中的错误之前,我会仔细查看您自己的代码。
  • 只是为了确定,在 iphone 端,我使用的是 github.com/stig/json-framework。是否需要针对 UTF-8 处理做一些特定的事情?或者只是将字符串发送到解析器?我在做什么: NSString *content = [[NSString alloc]initWithData:self.m_dataToParse encoding:NSUTF8StringEncoding]; SBJsonParser *_parser = [[SBJsonParser alloc]init]; NSDictionary *jsonContentDictionary = [_parser objectWithString:content];

标签: php objective-c json


【解决方案1】:

可能发生的情况是引号被编码为",然后与符号被编码为"。有几次在我的 JSON/XML 文件上进行查找和替换时,我也遇到过这种情况。只需通过并将它们改回"

如果您从无法编辑其格式的其他 API 或来源获取它们,只需使用

html_entity_decode($json->data);

围绕您要打印到页面的任何内容。

【讨论】:

    【解决方案2】:

    JSON 字符串中任何地方的文字引号都应该是\"""" 将是无效的 JSON 和语法错误。哪个“服务器”正在生成这个 JSON 文本? iphone,还是 PHP 的 json_encode()?

    【讨论】:

    • php 服务器正在创建 json。 iphone正在下载数据,并解析它。数组中的数组呢?那里的数据以这样的代码 \u454\u\453 显示文本,而不是文本。这是解析器中的错误吗?还是服务器中的东西?
    • 在 PHP 中进行一些调试,看看有什么输入到json_encode() 以及输出什么。我从未见过该函数产生错位输出,而且它确实可以正确处理嵌套数组。但是,其他东西可能会在 PHP 中进行输出过滤,而这可能会破坏一些东西。
    • 我也在使用你使用的库。我什至更新到最后一个版本,以确保不存在问题。仍然,我在那里得到了 \u434\u434。
    【解决方案3】:

    这是json发送报价的方式

    没有。 " 是一个 HTML 或 XML 实体。 JSON 中的引用是 "\""

    我注意到如果数组中有数组,则 UTF-8 不会以正确的方式显示,而是显示代码。这是 JSON 库中的错误吗?

    这可能是编码器中的错误。这可能是解码器中的错误。这可能是您如何使用其中之一的错误。

    如果不了解输入和输出的更多信息,我们无法判断。

    【讨论】:

    • 只是为了确定,在 iphone 端,使用这个库:我使用 github.com/stig/json-framework 是否需要针对 UTF-8 处理做一些特定的事情?或者只是将字符串发送到解析器?我在做什么: NSString *content = [[NSString alloc]initWithData:self.m_dataToParse encoding:NSUTF8StringEncoding]; SBJsonParser *_parser = [[SBJsonParser alloc]init]; NSDictionary *jsonContentDictionary = [_parser objectWithString:content];
    【解决方案4】:

    " 是一个 HTML 实体,一种表示可能被浏览器解释为 HTML 代码的字符的方式。

    PHP 5.2/5.3(不能代表其他人)不应触及 html 实体,因此请确保您没有在 json_encode 字符串上运行 html_entities(...)。高度怀疑这个错误在编码器中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-20
      • 2013-05-23
      • 2014-05-20
      • 1970-01-01
      • 1970-01-01
      • 2012-07-19
      • 2021-01-11
      • 2015-02-23
      相关资源
      最近更新 更多