0

我有一个这样的 JSON 字符串:

a: 2: {
    s: 4: "unit";
    s: 2: "h1";
    s: 5: "value";
    s: 40: "Mercedes-Benz A 45 AMG / 340 PS / Allrad";
}

现在,由于奇怪的键(我认为在 's' 中表示字符串的长度),我不知道该怎么做。

如果我像这样使用它,没有任何东西可以解析它(使用 php json_decode 或使用 obj-c SBJsonParser)。有没有办法在 php 中生成它的 html,或者我怎样才能只读取最后一个值?

提前致谢

4

4 回答 4

3

这看起来像序列化数组,但您的字符串绝对无效。(http://php.net/manual/en/function.unserialize.php)

于 2012-07-10T14:17:55.760 回答
2

这不是一个有效的 JSON,因此没有 json 解析器会读取它,您可以将其视为常规字符串并使用字符串操作来获取您需要的内容。

在 PHP 中为了获取最后一个值:

$str = ...//your json string
$lastValue = substr($str,strripos($str,'s:'));

这应该返回(根据您的示例输入):“40:“Mercedes-Benz A 45 AMG / 340 PS / Allrad”;”

于 2012-07-10T14:13:15.727 回答
1

上面提到的 JSON 格式是绝对无效的。

{
    "a": {
        "2": [
            { "s": { "4": "unit" } },
            { "s": { "2": "h1" } },
            { "s": { "5": "value" } },
            { "s": { "40": "Mercedes-Benz A 45 AMG / 340 PS / Allrad" } }
        ]
    }
}

这将是一个有效的JSON 格式

于 2012-07-10T14:32:00.103 回答
0

我建议将其视为开头的字符串。然后使用字符串操作去掉“a:”和“s:”。其他请求可能会返回其他类型(如果我是正确的,这些字母表示数据类型。)然后您可以尝试使用 JSON 解析器解析它。

虽然不能保证 :) 因为我不确定这些数字是有效的 JSON 还是必须用引号封装。

于 2012-07-10T14:22:40.470 回答