PHP json编码-数组键不作为字符串输出
php json encode - array keys not output as strings
我有一个这样的php数组:
$myArray = array(
'name' => 'Series Name',
'data' => array(
array("2012-11-13",0.71),
array("2012-11-14",0.45),
array("2012-11-15",0.65),
array("2012-11-16",0.67),
)
);
我想以json_encoded形式输出这个数组,数组键作为对象名称(?)。当我对数组进行echo json_encode
时,我得到了这个:
{
"name": "Series Name",
"data": [
[
"2012-11-13",
0.71
],
[
"2012-11-14",
0.45
],
[
"2012-11-15",
0.65
],
[
"2012-11-16",
0.67
]
]
}
问题在于数组键("name"answers"data")作为字符串输出。我需要它们是对象。也就是没有引号。
编辑:目的是构建和使用一个php数组的highcharts。从图表的来源可以看出,数据是以这种方式传递的:
$(function () {
$('#container').highcharts({
chart: {
type: 'spline'
},
title: {
text: 'Snow depth in the Vikjafjellet mountain, Norway'
},
subtitle: {
text: 'An example of irregular time data in Highcharts JS'
},
xAxis: {
type: 'datetime',
dateTimeLabelFormats: { // don't display the dummy year
month: '%e. %b',
year: '%b'
}
},
yAxis: {
title: {
text: 'Snow depth (m)'
},
min: 0
},
tooltip: {
formatter: function() {
return '<b>'+ this.series.name +'</b><br/>'+
Highcharts.dateFormat('%e. %b', this.x) +': '+ this.y +' m';
}
},
series: [{
name: 'Winter 2007-2008',
// Define the data points. All series have a dummy year
// of 1970/71 in order to be compared on the same x axis. Note
// that in JavaScript, months start at 0 for January, 1 for February etc.
data: [
[Date.UTC(1970, 9, 27), 0 ],
[Date.UTC(1970, 10, 10), 0.6 ],
[Date.UTC(1970, 10, 18), 0.7 ],
[Date.UTC(1970, 11, 2), 0.8 ],
[Date.UTC(1970, 11, 9), 0.6 ],
[Date.UTC(1970, 11, 16), 0.6 ],
[Date.UTC(1970, 11, 28), 0.67],
[Date.UTC(1971, 0, 1), 0.81],
[Date.UTC(1971, 0, 8), 0.78],
[Date.UTC(1971, 0, 12), 0.98],
[Date.UTC(1971, 0, 27), 1.84],
[Date.UTC(1971, 1, 10), 1.80],
[Date.UTC(1971, 1, 18), 1.80],
[Date.UTC(1971, 1, 24), 1.92],
[Date.UTC(1971, 2, 4), 2.49],
[Date.UTC(1971, 2, 11), 2.79],
[Date.UTC(1971, 2, 15), 2.73],
[Date.UTC(1971, 2, 25), 2.61],
[Date.UTC(1971, 3, 2), 2.76],
[Date.UTC(1971, 3, 6), 2.82],
[Date.UTC(1971, 3, 13), 2.8 ],
[Date.UTC(1971, 4, 3), 2.1 ],
[Date.UTC(1971, 4, 26), 1.1 ],
[Date.UTC(1971, 5, 9), 0.25],
[Date.UTC(1971, 5, 12), 0 ]
]
}, {
name: 'Winter 2008-2009',
data: [
[Date.UTC(1970, 9, 18), 0 ],
[Date.UTC(1970, 9, 26), 0.2 ],
[Date.UTC(1970, 11, 1), 0.47],
[Date.UTC(1970, 11, 11), 0.55],
[Date.UTC(1970, 11, 25), 1.38],
[Date.UTC(1971, 0, 8), 1.38],
[Date.UTC(1971, 0, 15), 1.38],
[Date.UTC(1971, 1, 1), 1.38],
[Date.UTC(1971, 1, 8), 1.48],
[Date.UTC(1971, 1, 21), 1.5 ],
[Date.UTC(1971, 2, 12), 1.89],
[Date.UTC(1971, 2, 25), 2.0 ],
[Date.UTC(1971, 3, 4), 1.94],
[Date.UTC(1971, 3, 9), 1.91],
[Date.UTC(1971, 3, 13), 1.75],
[Date.UTC(1971, 3, 19), 1.6 ],
[Date.UTC(1971, 4, 25), 0.6 ],
[Date.UTC(1971, 4, 31), 0.35],
[Date.UTC(1971, 5, 7), 0 ]
]
}, {
name: 'Winter 2009-2010',
data: [
[Date.UTC(1970, 9, 9), 0 ],
[Date.UTC(1970, 9, 14), 0.15],
[Date.UTC(1970, 10, 28), 0.35],
[Date.UTC(1970, 11, 12), 0.46],
[Date.UTC(1971, 0, 1), 0.59],
[Date.UTC(1971, 0, 24), 0.58],
[Date.UTC(1971, 1, 1), 0.62],
[Date.UTC(1971, 1, 7), 0.65],
[Date.UTC(1971, 1, 23), 0.77],
[Date.UTC(1971, 2, 8), 0.77],
[Date.UTC(1971, 2, 14), 0.79],
[Date.UTC(1971, 2, 24), 0.86],
[Date.UTC(1971, 3, 4), 0.8 ],
[Date.UTC(1971, 3, 18), 0.94],
[Date.UTC(1971, 3, 24), 0.9 ],
[Date.UTC(1971, 4, 16), 0.39],
[Date.UTC(1971, 4, 21), 0 ]
]
}]
});
});
这是json或形成javascript对象的另一种方式?
假设您想在客户端使用JSON对象,对于浏览器支持JSON.parse();
,您可以使用JavaScript解析JSON字符串:
obj = JSON.parse(json);
哪个json
是你的JSON字符串从服务器传递(结果json_encode($array);
在你的PHP文件),然而,浏览器的兼容性,你可以使用jQuery:
obj = $.parseJSON(json);
使用stdClass
。
$obj = new stdClass();
$obj->name = "Series Name";
$obj->data = array(
array("2012-11-13",0.71),
array("2012-11-14",0.45),
array("2012-11-15",0.65),
array("2012-11-16",0.67),
);
echo json_encode($obj);
如果你不知道stdClass是什么,请看看这个主题
编辑:为了使JSON产生有效的代码,所有的键/值对,除了数字,必须在引号
相关文章:
- 为什么我的javascript程序没有将其转换为整数而不是字符串
- 未捕获的InvalidValueError:setIcon:不是字符串;并且没有url属性;并且没有路径属性
- 为什么错误不能字符串化
- 将HTML作为字符串插入,不使用JQuery
- 调用不带括号的函数会将整个函数作为字符串返回
- 引用变量,它执行函数,但是向变量中添加字符串,将函数作为字符串而不是值返回
- jQuery .on() 不使用字符串变量作为键
- Javascript /jquery为什么不把字符串作为变量
- 使用对象作为键(不是字符串而是唯一对象)的关联映射的javascript方法是什么?
- Android:获取HTML从网页作为字符串HttpClient不工作
- 如何执行一个JavaScript函数,当我发送它的名字作为字符串动态不带参数
- 如何传递map-canvas作为字符串,而不是从document.getElementById获取它
- PHP json编码-数组键不作为字符串输出
- JSON.将数字作为字符串进行解析不会抛出错误
- Ext JS网格排序作为字符串而不是JSON发送
- Javascript Regex作为字符串不工作
- 角美元http.Post:不能向服务器发送带有数据的对象.数据作为字符串工作,作为对象-不是
- XML作为字符串返回,而不是对象返回
- IE11不接受字符串(变量)作为localStorage.setItem()的参数
- JavaScript多维数组不能作为数组访问,只能作为字符串访问