繁体   English   中英

将JSON数据存储在数据库中:无法将对象转换为字符串错误

[英]Storing JSON data in database: object could not be converted to string error

简而言之,我用Javascript编写了数据:

JSONdata = {
    name: form.name.value,
    address1: form.custa.value,
    address2: form.custa2.value,
    postcode: form.custpc.value,
    order: fullorder,
    cost: document.getElementById('total')
  }

fullorder是要订购的一系列产品。 [{"idnum":"2","cost":232,"quantity":"1"},{"idnum":"1","cost":2342,"quantity":"3"}]

我有一个XJAX,它对数据进行了字符串化处理,如下所示:

{"name":"j","address1":"jh","address2":"jhj","postcode":"h","order":[{"idnum":"2","cost":232,"quantity":"1"},{"idnum":"1","cost":2342,"quantity":"3"}],"cost":{}}

在PHP中,它以数组形式给出:

    Array
(
    [0] => stdClass Object
        (
            [idnum] => 2
            [cost] => 232
            [quantity] => 1
        )

    [1] => stdClass Object
        (
            [idnum] => 1
            [cost] => 2342
            [quantity] => 3
        )

)

我的问题是如何将其存储在数据库中? 我已经尝试过序列化和json_encode,但是都给了我:“类stdClass的对象无法转换为字符串”。

任何帮助将不胜感激!

->不用担心查询数据库和JSON之争。 我将立即获取所有数据,所以这不是问题:)

编辑:感谢您的答复家伙,我给你一些有关它如何工作的信息:

因此,当我将JSON发送到PHP时,我有一个脚本可以像这样提取所有数据:

$intel = extractdata();
function extractdata() {
    if (isset($_REQUEST['data'])){
    $jsonDump = json_decode($_REQUEST['data']);
  foreach($jsonDump as $key => $value) {
    $obj[$key] = $value;
  }
  return $obj;
}

所以这给了我

$intel['name'] = // form.name.value variable
$intel['address1'] = // form.name.value variable

$intel['order']给了我上面看到的PHP数组。 我想将所有这些存储到以下列的数据库中:客户名,地址1,地址2,邮政编码,订单,成本

我以为只要$neworder = json_encode($intel['order'])就可以将其存储在数据库中,但它仍然会引发转换错误。

谢谢

因此,基本上,您有一个包含以下对象的数组:

$o = array((Object)array(array("idnum"=>2, "cost"=>232, "quantity"=>1), array("idnum"=>1, "cost"=>2342, "quantity"=>3)));

json_encode()回显此值将返回一个json字符串:

echo json_encode($o);

结果将是

[
  {
    "0": {
      "idnum": 2,
      "cost": 232,
      "quantity": 1
    },
    "1": {
      "idnum": 1,
      "cost": 2342,
      "quantity": 3
    }
  }
]

这不适合您吗? 您是否还在使用任何框架或仅使用纯PHP?

如果您有这个:

$jsonDump = json_decode($_REQUEST['data']);

我相信您不需要这个:

  foreach($jsonDump as $key => $value) {
    $obj[$key] = $value;
  }

此外,您不要启动$ obj(在函数或其他事物的开头应为$ obj = null)。

您需要的是json_encode((array) $obj); 在字符串化之前将对象转换为简单数组,这应该可以解决您的问题。 您还可以实现_toSting($obj)函数,例如:

  $str = '{';
  foreach($obj as $key => $value) {
    $str .= '"'.$key.'":"'.$value.'"';
    $str .= ',';
  }
  $str = trim(',',$str).'}';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM