将PHP字符串转换为JSON数组(键:值)

将PHP字符串转换为JSON数组(键:值),php,arrays,json,string,Php,Arrays,Json,String,我从API调用中收到以下字符串: a = "{ "option1"=>"Color", "attribute1"=>{0=>"Black", 1=>"White",2=>"Blue"}, "option2"=>"Size", "attribute2"=>{0=>"S", 1=>"L",2=>"M"} }" 我想把它转换成JSON数组;因此,我尝试了JSON_encode(),但它返回以下

我从API调用中收到以下字符串:

a = "{
      "option1"=>"Color",
      "attribute1"=>{0=>"Black", 1=>"White",2=>"Blue"},
      "option2"=>"Size",
      "attribute2"=>{0=>"S", 1=>"L",2=>"M"}
}"
我想把它转换成JSON数组;因此,我尝试了JSON_encode(),但它返回以下字符串:

""{\"option1\"=>\"Color\",\"attribute1\"=>{0=>\"Black\", 1=>\"White\",2=>\"Blue\"},\"option2\"=>\"Size\",\"attribute2\"=>{0=>\"S\", 1=>\"L\",2=>\"M\"}}"" 
你能告诉我如何实现我的目标吗


谢谢

更好的方法是影响提供此类字符串的服务,以获得有效的JSON字符串(如果可能的话)
目前,如果要将一些“任意”字符串调整为JSON符号格式,并进一步获得JSON“数组”,请使用以下方法和
preg\u replace
JSON\u decode
函数:

$json_str = '{
      "option1"=>"Color",
      "attribute1"=>{0=>"Black", 1=>"White",2=>"Blue"},
      "option2"=>"Size",
      "attribute2"=>{0=>"S", 1=>"L",2=>"M"}
}';

// To get a 'pure' array
$arr = json_decode(preg_replace(["/\"?(\w+)\"?=>/", "/[\r\n]|\s{2,}/"], ['"$1":', ''], $json_str), true);
print_r($arr);
输出:

Array
(
    [option1] => Color
    [attribute1] => Array
        (
            [0] => Black
            [1] => White
            [2] => Blue
        )

    [option2] => Size
    [attribute2] => Array
        (
            [0] => S
            [1] => L
            [2] => M
        )
)
{"option1":"Color","attribute1":["Black","White","Blue"],"option2":"Size","attribute2":["S","L","M"]}
要获取表示数组的JSON字符串,请执行以下操作:

$json_arr = json_encode($arr);
print_r($json_arr);
输出:

Array
(
    [option1] => Color
    [attribute1] => Array
        (
            [0] => Black
            [1] => White
            [2] => Blue
        )

    [option2] => Size
    [attribute2] => Array
        (
            [0] => S
            [1] => L
            [2] => M
        )
)
{"option1":"Color","attribute1":["Black","White","Blue"],"option2":"Size","attribute2":["S","L","M"]}

您应该执行JSON_decode(),因为您的字符串是JSON。使用json decode选项作为数组而不是\StdClass进行解析。(OFC您需要右行分隔符和符号转义符)。该字符串来自何处?在不知道应该是什么格式的情况下,几乎没有什么策略来解析和计算它…@YuriBlanc该字符串不是有效的JSON@JYoThI该字符串不是有效的JSON。是的,刚才我看到的错误是无效的JSON@arkaschae正是我想要实现的。感谢您的帮助这似乎不能处理
a=“…”
部分,但它是常量,一个简单的
mb_substr()
调用就可以了。@lvaroGonzález,您的意思是,当输入字符串只包含
“…”
而没有任何结构原型时?我的意思是当输入字符串包含问题的字面意思时(虽然我怀疑它根本不是真实的数据,因为这个问题实际上自相矛盾。)@lvaroGonzález,实际上它看起来像一个“转储”对象/数组,而不是一个有效的API响应。这就是为什么我写了关于影响服务的文章。。。