如何用单引号替换json数据

时间:2018-05-14 05:42:22

标签: jquery json

原始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
            });

4 个答案:

答案 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