> 馆藏中心

json_encode 没有把数组转为json

来源:cnblogs 编辑:张华

可以使用2113json_encode完成转换,范例5261:<?php$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);echo json_encode($arr);?>以上例4102程会输1653出:{"a":1,"b":2,"c":3,"d":4,"e":5},<?php$array=array("data1"=>"data1","data2"=>"data2","data3"=>array(4102"data11"=>"data11","data22"=>"data22","data33"=>"data33"),"data4"=>array("data111","data222","data333"));echo json_encode($array);?>是不是这个?输出的JSON:1653{"data1":"data1","data2":"data2","data3":{"data11":"data11","data22":"data22","data33":"data33"},"data4":["data111","data222","data333"]}www.179s.com防采集请勿采集本网。

  • 你现在的 thirdSkus 是一个 string 类型,所以不能成功 转换成 数组
办法:
  1. 把 thirdSkus 先转换成对象
  2. 再转换成 json
$data['thirdSkus'] = json_decode($data['thirdSkus']);json_encode($data); 收获园豆:50

============================================

json_encode格式的数据,中间带有\,在存入数据库的时候,会把反斜杠删除了。 所以在将二维数组json_encode之后,需要再使用addslashes()处理一下,再存入数据库。 需呀使用的时候,提取出来,先用stripslashes()处理一下,再json_decode()就能

$data['thirdSkus']不是一个json 不能json_decode

你可以参考一下我的建议,1.普通:若php关联数组不含有中文,直接json_encode转换。转换之后用json_deconde($stuJson)转为php对象。

报错:json_decode() expects parameter 1 to be string, array given

json_encode($row)并不会改变$row变量的内容,你应该用一个变量去接收它的返回值,然后echo出来 $encoded_row = json_encode($row); if ($encoded_row) { echo $encoded_row; } else { }

============================================

json_encode格式的数据,中间带有\,在存入数据库的时候,会把反斜杠删除了。 所以在将二维数组json_encode之后,需要再使用addslashes()处理一下,再存入数据库。 需呀使用的时候,提取出来,先用stripslashes()处理一下,再json_decode()就能

需要这样的格式:

js中使用eval() 将从php中获取到的字符串转换为js可识别的对象或者数组。。

"product":

"brandId":"1",

"categoryId":"1",

"introduction":"1111",

"productArea":"",

"spuName":"1111",

"thirdSkus":[{

"height":"",

"isEnergySav":"",

"isEnvironmental":"",

"length":"",

"marketPrice":"100",

"modelCode":"",

"otherImage":"http://pic.haoxyx.com/https://img14.360buyimg.com/n0/jfs/t1/63929/37/643/505682/5cecf5beEbebd72c6/ff6968ffc1256f4f.jpg",

"packinglist":"",

"prdModel":"",

"primaryImage":"http://pic.haoxyx.com/https://img14.360buyimg.com/n0/jfs/t1/63929/37/643/505682/5cecf5beEbebd72c6/ff6968ffc1256f4f.jpg",

"saleAttributes":[{

"aName":"纸箱容量",

"aid":"111",

"desc":"",

"vName":"0-5L",

"vid":"111"

}],

"specAttributes":[{

"aName":"颜色",

"aid":"103191",

"desc":"",

"vName":"黑色",

"vid":"121731"

},{

"aName":"噪音分贝",

"aid":"103200",

"desc":"",

"vName":"20-30dB",

"vid":"121676"

},

{

"aName":"最大碎纸幅面",

"aid":"103202",

"desc":"",

"vName":"A3",

"vid":"121613"

},

{

"aName":"是否是进口产品",

"aid":"103207",

"desc":"",

"vName":"否",

"vid":"121622"

},

{

"aName":"保密等级",

"aid":"103193",

"desc":"",

"vName":"1级",

"vid":"121660"

},

{

"aName":"安全触停",

"aid":"103192",

"desc":"",

"vName":"有",

"vid":"121722"

},{

"aName":"可碎介质",

"aid":"103195",

"desc":"",

"vName":"纸",

"vid":"121659"

},{

"aName":"单次碎纸张数",

"aid":"103194",

"desc":"100张"

},{

"aName":"碎纸速度",

"aid":"103197",

"desc":"",

"vName":"1-2米/分钟",

"vid":"121671"

},{

"aName":"连续碎纸机时间",

"aid":"103196",

"desc":"",

"vName":"0-10分钟",

"vid":"121668"

},{

"aName":"移动轮",

"aid":"103199",

"desc":"",

"vName":"有",

"vid":"121723"

},{

"aName":"碎纸效果",

"aid":"103198",

"desc":"",

"vName":"米粒状",

"vid":"121674"

}],

"saleUnit":"",

"sellPrice":"100",

"skuName":"1111",

"taxRate":"",

"thirdSkuId":"11",

"weight":"",

"weightUnit":"",

"width":""

}],

"thirdSpuId":"1111"

},

"supplierCode":"1111",

"token":"111111111111"

打印出来是这种格式的:

["token"]=> string(32) "111111"

["supplierCode"]=> string(6) "111"

["product"]=> array(6) { ["thirdSpuId"]=> string(5) "111" ["categoryId"]=> string(5) "111" ["spuName"]=> string(37) "111" ["brandId"]=> string(7) "1001924" ["introduction"]=> string(4) "asda" ["thirdSkus"]=> string(536) "{"thirdSkuId":"10077","skuName":"\u6cb3\u5357\u9f0e\u94e7\u79d1\u8d38\u5546\u54c1\u6d4b\u8bd5\u65b0\u589e3","sellPrice":"163.00","marketPrice":195.6,"skuType":1,"primaryImage":"http://pic.haoxyx.com/https://img14.360buyimg.com/n0/jfs/t1/63929/37/643/505682/5cecf5beEbebd72c6/ff6968ffc1256f4f.jpg","otherImage":"http://pic.haoxyx.com/https://img14.360buyimg.com/n0/jfs/t1/63929/37/643/505682/5cecf5beEbebd72c6/ff6968ffc1256f4f.jpg","saleAttributes":"[{"aid":"10748","vid":"121619","aName":"\u590d\u5370\u7eb8\u89c4\u683c","vName":"B5"}]"}" }

============================================

json_encode格式的数据,中间带有\,在存入数据库的时候,会把反斜杠删除了。 所以在将二维数组json_encode之后,需要再使用addslashes()处理一下,再存入数据库。 需呀使用的时候,提取出来,先用stripslashes()处理一下,再json_decode()就能

@锦瑟_华年: 把 $data打印下呢?

============================================

json_encode格式的数据,中间带有\,在存入数据库的时候,会把反斜杠删除了。 所以在将二维数组json_encode之后,需要再使用addslashes()处理一下,再存入数据库。 需呀使用的时候,提取出来,先用stripslashes()处理一下,再json_decode()就能

@Cheney.Zhong.ZCY: array(6) {

["thirdSpuId"] => string(5) "10077"

["categoryId"] => string(5) "10174"

["spuName"] => string(37) 11111111113"

["brandId"] => string(7) "1001924"

["introduction"] => string(4) "asda"

["thirdSkus"] => string(536) "{"thirdSkuId":"10077","skuName":"\u6cb3\u5357\u9f0e\u94e7\u79d1\u8d38\u5546\u54c1\u6d4b\u8bd5\u65b0\u589e3","sellPrice":"163.00","marketPrice":195.6,"skuType":1,"primaryImage":"http://pic.haoxyx.com/https://img14.360buyimg.com/n0/jfs/t1/63929/37/643/505682/5cecf5beEbebd72c6/ff6968ffc1256f4f.jpg","otherImage":"http://pic.haoxyx.com/https://img14.360buyimg.com/n0/jfs/t1/63929/37/643/505682/5cecf5beEbebd72c6/ff6968ffc1256f4f.jpg","saleAttributes":"[{"aid":"10748","vid":"121619","aName":"\u590d\u5370\u7eb8\u89c4\u683c","vName":"B5"}]"}"

}

============================================

json_encode格式的数据,中间带有\,在存入数据库的时候,会把反斜杠删除了。 所以在将二维数组json_encode之后,需要再使用addslashes()处理一下,再存入数据库。 需呀使用的时候,提取出来,先用stripslashes()处理一下,再json_decode()就能

@锦瑟_华年:

改为直接赋值

============================================

json_encode格式的数据,中间带有\,在存入数据库的时候,会把反斜杠删除了。 所以在将二维数组json_encode之后,需要再使用addslashes()处理一下,再存入数据库。 需呀使用的时候,提取出来,先用stripslashes()处理一下,再json_decode()就能

@Cheney.Zhong.ZCY:

直接赋值之后这个双引号就不见了

"saleAttributes":[{"aid":"10748","vid":"121619","aName":"\u590d\u5370\u7eb8\u89c4\u683c","vName":"B5"}]}但是

thirdSkus 是还string类型

============================================

json_encode格式的数据,中间带有\,在存入数据库的时候,会把反斜杠删除了。 所以在将二维数组json_encode之后,需要再使用addslashes()处理一下,再存入数据库。 需呀使用的时候,提取出来,先用stripslashes()处理一下,再json_decode()就能

@锦瑟_华年:

$data["thirdSkus"] 的结构应该如下:$data["thirdSkus"] = array('thirdSkuId' => '10077','skuName' => '河南鼎铧科贸商品测试新增3','sellPrice' => '163.00','marketPrice' => 195.6,'skuType' => 1,'primaryImage' => 'http://pic.haoxyx.com/https://img14.360buyimg.com/n0/jfs/t1/63929/37/643/505682/5cecf5beEbebd72c6/ff6968ffc1256f4f.jpg','otherImage' => 'http://pic.haoxyx.com/https://img14.360buyimg.com/n0/jfs/t1/63929/37/643/505682/5cecf5beEbebd72c6/ff6968ffc1256f4f.jpg','saleAttributes' => array(array('aid' => '10748','vid' => '121619','aName' => '复印纸规格','vName' => 'B5',)));var_dump(json_encode($data['thirdSkus']));


另外:aid, vid, thirdSkuId 等,如果 java 定义的不是 string, 还是无法解析。你需要把 aid, vid 等转成 int, price 转成 float 后再调用 json_encode

============================================

json_encode格式的数据,中间带有\,在存入数据库的时候,会把反斜杠删除了。 所以在将二维数组json_encode之后,需要再使用addslashes()处理一下,再存入数据库。 需呀使用的时候,提取出来,先用stripslashes()处理一下,再json_decode()就能

@Cheney.Zhong.ZCY: 打印出还是string的类型

打印信息如下:

string(513) "{"thirdSkuId":"10077","skuName":"\u6cb3\u5357\u9f0e\u94e7\u79d1\u8d38\u5546\u54c1\u6d4b\u8bd5\u65b0\u589e3","sellPrice":"163.00","marketPrice":195.6,"skuType":1,"primaryImage":"http://pic.haoxyx.com/https://img14.360buyimg.com/n0/jfs/t1/63929/37/643/505682/5cecf5beEbebd72c6/ff6968ffc1256f4f.jpg","otherImage":"http://pic.haoxyx.com/https://img14.360buyimg.com/n0/jfs/t1/63929/37/643/505682/5cecf5beEbebd72c6/ff6968ffc1256f4f.jpg","saleAttributes":[{"aid":"10748","vid":"121619","aName":"\u590d\u5370\u7eb8\u89c4\u683c","vName":"B5"}]}"

array(4) {

["success"] => bool(false)

["resultCode"] => string(2) "99"

["resultMsg"] => string(479) "JSON parse error: Cannot deserialize instance of java.util.ArrayList out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of java.util.ArrayList out of START_OBJECT token

at [Source: (PushbackInputStream); line: 1, column: 92] (through reference chain: com.crmsc.ecc.api.oauth2.domain.feign.product.SpuSyncReqVo["product"]->com.crmsc.ecc.api.oauth2.domain.feign.product.Product["thirdSkus"])"

["result"] => NULL

}

============================================

json_encode格式的数据,中间带有\,在存入数据库的时候,会把反斜杠删除了。 所以在将二维数组json_encode之后,需要再使用addslashes()处理一下,再存入数据库。 需呀使用的时候,提取出来,先用stripslashes()处理一下,再json_decode()就能

@Cheney.Zhong.ZCY: 你打印出来的是对的吗?是不是我的数组里面的数据类型不对。我打印看一下

============================================

json_encode格式的数据,中间带有\,在存入数据库的时候,会把反斜杠删除了。 所以在将二维数组json_encode之后,需要再使用addslashes()处理一下,再存入数据库。 需呀使用的时候,提取出来,先用stripslashes()处理一下,再json_decode()就能

已经解决 谢谢你加了一个[0]就解决了

一、2113json_encode()[php] view plain copy<?php  $arr =array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);  echo json_encode($arr);  ?>  输出[php] view plain copy{"a":1,"b":2,"c":3,"d":4,"e":5}  再看一个对象转换的例子:[php] view plain copy$obj->body           = 'another post';  $obj->id             = 21;  $obj->approved       = true;  $obj->favorite_count = 1;  $obj->status         = NULL;  echo json_encode($obj);  输出[php] view plain copy{  "body":"another post",  "id":21,  "approved":true,  "favorite_count":1,  "status":null  }   由于5261json只接受4102utf-8编码的字符,所以json_encode()的参1653数必须是utf-8编码,否则会得到空字符或者null。当中文使用GB2312编码,或者外文使用ISO-8859-1编码的时候,这一点要特别注意。二、索引数组和关联数组PHP支持两种数组,一种是只保存"值"(value)的索引数组(indexed array),另一种是保存"名值对"(name/value)的关联数组(associative array)。由于javascript不支持关联数组,所以json_encode()只将索引数组(indexed array)转为数组格式,而将关联数组(associative array)转为对象格式。比如,现在有一个索引数组[php] view plain copy$arr = Array('one','two', 'three');  echo json_encode($arr);  输出[php] view plain copy["one","two","three"]  如果将它改为关联数组:[php] view plain copy$arr = Array('1'=>'one','2'=>'two','3'=>'three');  echo json_encode($arr);  输出变为[php] view plain copy{"1":"one","2":"two","3":"three"}   注意,数据格式从"[]"(数组)变成了"{}"(对象)。如果你需要将"索引数组"强制转化成"对象",可以这样写[php] view plain copyjson_encode( (object)$arr);  或者[php] view plain copyjson_encode ( $arr, JSON_FORCE_OBJECT );  三、类(class)的转换下面是一个PHP的类:[php] view plain copyclass Foo {  const    ERROR_CODE = '404';  public   $public_ex ='this is public';  private  $private_ex ='this is private!';  protected$protected_ex ='this should be protected';  publicfunction getErrorCode() {  returnself::ERROR_CODE;  }  }   现在,对这个类的实例进行json转换:[php] view plain copy$foo =new Foo;  $foo_json = json_encode($foo);  echo $foo_json;   输出结果是[php] view plain copy{"public_ex":"this is public"}  四、json_decode() 可以看到,除了公开变量(public),其他东西(常量、私有变量、方法等等)都遗失了。该函数用于将json文本转换为相应的PHP数据结构。下面是一个例子:[php] view plain copy$json ='{"foo": 12345}';  $obj = json_decode($json);  print $obj->{'foo'};// 12345  通常情况下,json_decode()总是返回一个PHP对象,而不是数组。比如:[php] view plain copy$json ='{"a":1,"b":2,"c":3,"d":4,"e":5}';  var_dump(json_decode($json));  结果就是生成一个PHP对象:[php] view plain copyobject(stdClass)#1 (5) {  ["a"] => int(1)  ["b"] => int(2)  ["c"] => int(3)  ["d"] => int(4)  ["e"] => int(5)  }   如果想要强制生成PHP关联数组,json_decode()需要加一个参数true:[php] view plain copy$json ='{"a":1,"b":2,"c":3,"d":4,"e":5}';  var_dump(json_decode($json,true));  结果就生成了一个关联数组:[php] view plain copyarray(5) {  ["a"] => int(1)  ["b"] => int(2)  ["c"] => int(3)  ["d"] => int(4)  ["e"] => int(5)  }  下面三种json写法都是错的,你能看出错在哪里吗?五、json_decode()的常见错误[php] view plain copy$bad_json ="{ 'bar': 'baz' }";  $bad_json ='{ bar: "baz" }';  $bad_json ='{ "bar": "baz", }';  第一个的错误是,json的分隔符(delimiter)只允许使用双引号,不能使用单引号。第二个的错误是,json名值对的"名"(冒号左边的部分),任何情况下都必须使用双引号。第三个的错误是,最后一个值之后不能添加逗号(trailing comma)。 对这三个字符串执行json_decode()都将返回null,并且报错。另外,json只能用来表示对象(object)和数组(array),如果对一个字符串或数值使用json_decode(),将会返回null。[php] view plain copyvar_dump(json_decode("Hello World"));//null  ,  json和php数组 格式的互相转换2113,参考如下:  5261$php_json = json_encode($json_arr); //把php数组格式转换成 json 格式的4102数据  echo $php_json;  $php_json = json_decode($php_json); //再把json格式的数据转1653换成php数组  print_r($php_json);  json数组  $json = '[{"id":"22","name":"33","descn":"44"}]'; //json格式的数组转换成 php的数组  $arr = (Array)json_decode($json);  echo $arr[0]->id; //用对象的方式访问,$arr = array('name' => 'hehe');echo json_encode($arr);本回答被提问者和网友采纳,json_encode函数就可以了内容来自www.179s.com请勿采集。

本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。本文《json_encode 没有把数组转为json》转载自cnblogs,版权归原作者所有,若侵权请联系:E-MAIL:513175919@qq.com
违法违规信息请立即联系本网可获得现金奖励,TEL:1-8-2-1-0-2-3-3-3-8-1(电话仅供违法违规信息举报,侵权类信息请EMAIL。)

www.179s.com false 互联网 http://www.179s.com/jsblogcnk/po/pokadk.html report 23467 你现在的 thirdSkus 是一个 string 类型,所以不能成功 转换成 数组办法:把 thirdSkus 先转换成对象再转换成 json$data['thirdSkus'] = json_decode($data['thirdSkus']);json_encode($data); 收获园豆:50============================================$data['thirdSkus']不是一个json 不能json_de

热门图片

经济金融企业管理法律法规社会民生科学教育降生活体育运动文化艺术电子数码电脑网络娱乐休闲行政地区心理分析医疗卫生