原始JSON数据
[
{"year":2008,"value":20,"sales":10},
{"year":2010,"value":10,"sales":20},
{"year":2015,"value":5,"sales":30},
{"year":2020,"value":25,"sales":40},
{"year":2025,"value":30,"sales":50},
{"year":2030,"value":40,"sales":60},
{"year":2035,"value":60,"sales":70}
]
我需要这样
[
{"year":"2008","value":20,"sales":10},
{"year":"2010","value":10,"sales":20},
{"year":"2015","value":5,"sales":30},
{"year":"2020","value":25,"sales":40},
{"year":"2025","value":30,"sales":50},
{"year":"2030","value":40,"sales":60},
{"year":"2035","value":60,"sales":70}
]
您可以看到以单引号替换的年份差异, 在更改之后,我需要仅使用JSON格式的数据 这是我的需要,为此我需要将我的年份转换为单引号,以便折线图工作
function Onsuccess(response) {
var str1 = JSON.parse(response.d);
alert(str1);
Morris.Area({
element: 'morris-area-chart',
data: str1,
xkey: 'year',// here im not getting value of year in line
ykeys: ['sales'],
labels: ['value'],
pointSize: 3,
fillOpacity: 0,
pointStrokeColors:['#55ce63', '#009efb', '#2f3d4a'],
behaveLikeLine: true,
gridLineColor: '#e0e0e0',
lineWidth: 3,
hideHover: 'auto',
lineColors: ['#55ce63', '#009efb', '#2f3d4a'],
resize: true
});
答案 0 :(得分:1)
假设您只希望year
属性表示为字符串,您可以通过将原始数组映射到具有相同数据结构的数组来仅使用year
替换数字year.toString()
来强制转换它们。
const originalJsonData = '[{"year":2008,"value":20,"sales":10},{"year":2010,"value":10,"sales":20},{"year":2015,"value":5,"sales":30},{"year":2020,"value":25,"sales":40},{"year":2025,"value":30,"sales":50},{"year":2030,"value":40,"sales":60},{"year":2035,"value":60,"sales":70}]'
const original = JSON.parse(originalJsonData)
const altered = original.map(o => ({...o, year: o.year.toString()}))
const alteredJsonData = JSON.stringify(altered)
console.info(alteredJsonData)
如果你真的想要在字符串中嵌入文字单引号,即
{"year": "'2008'", ...
然后您可以将映射值更改为
{...o, year: `'${o.year}'`}
答案 1 :(得分:1)
也许有点过于简单,但事实却是这样:
var json = {
"data":[
{"year":2008,"value":20,"sales":10},
{"year":2010,"value":10,"sales":20},
{"year":2015,"value":5,"sales":30},
{"year":2020,"value":25,"sales":40},
{"year":2025,"value":30,"sales":50},
{"year":2030,"value":40,"sales":60},
{"year":2035,"value":60,"sales":70}
]
}
for(var i in json.data) {
json.data[i].year = json.data[i].year.toString();
}
答案 2 :(得分:0)
这是不可能的,但如果你必须将其转换为这种格式,你可以自己构建它。
var data = [
{ "year": 2008, "value": 20, "sales": 10 },
{ "year": 2010, "value": 10, "sales": 20 },
{ "year": 2015, "value": 5, "sales": 30 },
{ "year": 2020, "value": 25, "sales": 40 },
{ "year": 2025, "value": 30, "sales": 50 },
{ "year": 2030, "value": 40, "sales": 60 },
{ "year": 2035, "value": 60, "sales": 70 }
];
var NewData = "[\n";
for (var i = 0; i < data.length; i++) {
NewData += " {\"year\":'" + data[i].year + "',\"value\":" + data[i].value + ",\"sales\":" + data[i].sales + "},\n";
}
NewData += "]";
console.log(NewData);
答案 3 :(得分:-1)
我很抱歉抱歉,这是来自数据库的数据类型,感谢大家的关注, 来自Int和i中的数据库的JSON数据已更改为varchar