javascript - 怎样将JS中的json对象转换成PHP可以识别的json对象
阿神
阿神 2017-04-11 12:23:58
[JavaScript讨论组]
{
  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也可以识别?

阿神
阿神

闭关修行中......

全部回复(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)
}
ringa_lee

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

高洛峰

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

伊谢尔伦

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

ringa_lee

写到文件中,比如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格式都不对

PHPz

json_decode 装成php的格式

怪我咯

格式都不对 引号呢

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号