怎样将JS中的json对象转换成PHP可以识别的json对象

{
  a: {
    b: '1',
    c: '2',
    d: '3'
  },
  e: {
    f: '4',
    g: '5',
    h: '6'
  },
  i: [
    {
      j: '7',
      k: '8',
      l: '9'
    },
    {
      m: '10',
      n: '11',
      o: '12'
    },
    {
      p: '13',
      q: '14 ',
      r: '15'
    }
  ],
  s: '16',
  t: '17',
  u: '18',
  v: false,
  w: 'final',
  x: '',
  y: true,
  z: true
}

这一段是JS可以识别的JSON对象,怎样让PHP也可以识别?

阅读 7k
7 个回答

你需要先将js对象转换为json,再使用json_decode函数转为php对象。

<?php

$str = <<<STR
{
  a: {
    b: '1',
    c: '2',
    d: '3'
  },
  e: {
    f: '4',
    g: '5',
    h: '6'
  },
  i: [
    {
      j: '7',
      k: '8',
      l: '9'
    },
    {
      m: '10',
      n: '11',
      o: '12'
    },
    {
      p: '13',
      q: '14 ',
      r: '15'
    }
  ],
  s: '16',
  t: '17',
  u: '18',
  v: false,
  w: 'final',
  x: '',
  y: true,
  z: true
}
STR;

$str = preg_replace(["/([a-zA-Z_]+[a-zA-Z0-9_]*)\s*:/", "/:\s*'(.*?)'/"], ['"\1":', ': "\1"'], $str);
var_dump($str);
var_dump(json_decode($str));

输出为:

string(418) "{
  "a": {
    "b": "1",
    "c": "2",
    "d": "3"
  },
  "e": {
    "f": "4",
    "g": "5",
    "h": "6"
  },
  "i": [
    {
      "j": "7",
      "k": "8",
      "l": "9"
    },
    {
      "m": "10",
      "n": "11",
      "o": "12"
    },
    {
      "p": "13",
      "q": "14 ",
      "r": "15"
    }
  ],
  "s": "16",
  "t": "17",
  "u": "18",
  "v": false,
  "w": "final",
  "x": "",
  "y": true,
  "z": true
}"
object(stdClass)#2 (11) {
  ["a"]=>
  object(stdClass)#1 (3) {


    ["b"]=>
    string(1) "1"
    ["c"]=>
    string(1) "2"
    ["d"]=>
    string(1) "3"
  }
  ["e"]=>
  object(stdClass)#3 (3) {
    ["f"]=>
    string(1) "4"
    ["g"]=>
    string(1) "5"
    ["h"]=>
    string(1) "6"
  }
  ["i"]=>
  array(3) {
    [0]=>
    object(stdClass)#4 (3) {
      ["j"]=>
      string(1) "7"
      ["k"]=>
      string(1) "8"
      ["l"]=>
      string(1) "9"
    }
    [1]=>
    object(stdClass)#5 (3) {
      ["m"]=>
      string(2) "10"
      ["n"]=>
      string(2) "11"
      ["o"]=>
      string(2) "12"
    }
    [2]=>
    object(stdClass)#6 (3) {
      ["p"]=>
      string(2) "13"
      ["q"]=>
      string(3) "14 "
      ["r"]=>
      string(2) "15"
    }
  }
  ["s"]=>
  string(2) "16"
  ["t"]=>
  string(2) "17"
  ["u"]=>
  string(2) "18"
  ["v"]=>
  bool(false)
  ["w"]=>
  string(5) "final"
  ["x"]=>
  string(0) ""
  ["y"]=>
  bool(true)
  ["z"]=>
  bool(true)
}

JSON.stringify():将Json序列化为json字符串。
json_decode:php接受到json字符串后使用json_decode将它转换为一个关联数组(与JSON结构一样的数据)

JSON.stringify() 返回的字符串在 PHP 里面直接 json_decode 就行了

1,序列化成字符串,再转PHP;
2,格式化成XML,再转PHP;

写到文件中,比如a.json,再用php读:

json_decode(file_get_contents(a.json));

得到的就是一个json对象,如果想转变为数组:

json_decode(file_get_contents(a.json),1);
{
  "a": {
    "b": "1",
    "c": "2",
    "d": "3"
  },
  "e": {
    "f": "4",
    "g": "5",
    "h": "6"
  },
  "i": [
    {
      "j": "7",
      "k": "8",
      "l": "9"
    },
    {
      "m": "10",
      "n": "11",
      "o": "12"
    },
    {
      "p": "13",
      "q": "14 ",
      "r": "15"
    }
  ],
  "s": "16",
  "t": "17",
  "u": "18",
  "v": false,
  "w": "final",
  "x": "",
  "y": true,
  "z": true
}

失败是因为你的json格式都不对

json_decode 装成php的格式

格式都不对 引号呢

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题