PHP json_encode()和Javascript JSON.parse()

时间:2017-06-12 04:01:45

标签: javascript php json

我需要从JSON中获取服务器中的数据。数据集非常庞大,并且具有多级嵌套。我使用数组。数组中的一些键是JSON字符串(我需要将这些字符串存储在数据库中,以便稍后从这些字符串创建JS对象)。

    Array(
    'key1'=> 'value1',
    'key2'=> 'string in JSON format', // json_encode('key2_value that may contain russian symbols', JSON_UNESCAPED_UNICODE)
    'key3'=> array(
        'key1'=> array(
            key1=> 'string in JSON format'
        )
    )
)

元素的嵌套可以是任意的,任何元素都可以包含JSON格式的字符串。

我使用php json_encode($data, JSON_UNESCAPED_UNICODE)函数在JSON中编码这个巨大的数组。我使用第二个参数,因为数据可能包含俄语符号(我需要稍后搜索其中一些字符串)。之后我收到数据......

1步:

使用JS JSON.parse()函数使用JSON字符串解码所有数组。

2步:

使用JSON.parse()创建JS对象后,在数据库列中保存一些JSON字符串。

但是某些字符串可能包含不允许的JSON字符,特别是'\ r'。当我尝试使用JSON解析解析此字符串时,我现在可以在第二步中获得JSON.parse错误。但理论上它也可能在第一步发生。

但是PHP json_decode很好用! JS JSON.parse工作不好!

有没有人有任何想法和建议? (请不要忘记,当我在主数组中使用json_encode时,嵌套的json字符串可能包含俄语符号也被转义 - 斜杠,“”即)。

1 个答案:

答案 0 :(得分:0)

你不理解我......我找到了解决问题的两个方法!!!!!!!

  1. 我使用JSON_UNESCAPED_UNICODE过滤器主数组编码,其中包含json格式的内部元素和JSON_UNESCAPED_UNICODE过滤器。
  2. (内部元素将存储未在数据库中解析)

    我在浏览器中打印我的json行,然后复制它并尝试在控制台中解析它。它解析成功。但是当我试图以json格式解析内部属性值时,我在特殊字符位置得到了解析错误。

    我在我的应用程序中收到此行并解析了GOOD,包括json格式的内部属性值!!!

    1. 我不能使用JSON_UNESCAPED_UNICODE过滤器。
    2. 我解析Main Array。在数据库中粘贴包含俄语符号的常用字符串。我可以在数据库中使用搜索。但是如果我将json字符串粘贴到带有俄文字符的数据库中,它将被粘贴为“\ u0413 \ u043e \ u0440 \ u043e \ u0434”并且我无法使用搜索。

      我的解决方案 - JSON.stringify(JSON.parse('JSON string'))在数据库中粘贴记录之前。在这种情况下,它将正确粘贴,我可以使用搜索。