0

我正在从我无法控制的服务器请求数据包,并且他们对开发人员可能遇到的任何问题都不感兴趣。

由于速度的原因,我很想为 PHP 使用内置的 json_decode,但我使用的是来自http://mike.teczno.com/json.html的基于 PHP 的解码器,它对于 40,000 个数据包可能非常慢+ 记录。

这是我从服务器收到 JSON 并去掉斜线(stripslashes())后的 JSON:

{
"results": {
    "localPlayers": {
        "friends": [
            {
                "name": "Player Name 1",
                "friend_name": "Friend Name 1",
                "level": "3"
            },
            {
                "name": ""PlayerName2"",
                "friend_name": "",
                "level": "3"
            },
            {
                "name": "Pl/\yer Name 3",
                "friend_name": "Friend Name 3",
                "level": "3"
            },
            {
                "name": "Player Name 4",
                "friend_name": "Friend "Name4"",
                "level": "4"
            }
        ]
    }
}
}

它应该是:

{
"results": {
    "localPlayers": {
        "friends": [
            {
                "name": "Player Name 1",
                "friend_name": "Friend Name 1",
                "level": "3"
            },
            {
                "name": "\"PlayerName2\"",
                "friend_name": "",
                "level": "3"
            },
            {
                "name": "Pl/\\yer Name 3",
                "friend_name": "Friend Name 3",
                "level": "3"
            },
            {
                "name": "Player Name 4",
                "friend_name": "Friend \"Name4\"",
                "level": "4"
            }
        ]
    }
}
}

我尝试了不同的方法,并到处搜索可能处理“惰性”JSON 的替代 PHP 扩展。我想我已经通过查看那里的所有 JSON 后代(如果这对一个或另一个正常)融化了我的大脑,但似乎找不到任何合适的东西。

不必手动编辑数据包并使用内置 PHP json 解码器的速度会很好,但获得准确的信息更重要,使用 Services_JSON 是我唯一的答案。

此外,Services_JSON 能够解码的原因是由于该解码器或生成的 JSON 中的错误吗?

我希望有人看到这些“格式错误”的 JSON 数据包并认出它们。

谢谢你。

编辑:

我很抱歉,这是在带斜杠之前来自服务器的数据包:

我最初将带斜线用于撇号。:(

    {
   "results":{
      "localPlayers":{
         "friends":[
            {
               "name":"Player\'s Name 1",
               "friend_name":"Friend Name 1",
               "level":"3"
            },
            {
               "name":""PlayerName2"",
               "friend_name":"",
               "level":"3"
            },
            {
               "name":"Pl/\yer Name 3",
               "friend_name":"Friend Name 3",
               "level":"3"
            },
            {
               "name":"Player Name 4",
               "friend_name":"Friend "Name4"",
               "level":"4"
            }
         ]
      }
   }
}
4

1 回答 1

0

你能检查一下你的代码中是否没有使用任何形式的函数吗

stripslashes()
str_replace()

检查是否可以使用[JSON_UNESCAPED_SLASHES()][1]PHP 5.4 起可用

php.ini集合中magic_quotes_gpc = Off,但此功能自 PHP 5.3.0 起已弃用,自 PHP 5.4.0 起已移除。

于 2013-05-22T02:07:26.730 回答