通过循环更改 JSON 格式的数据.结果是三倍

change json formated data by looping... the result is tripled

本文关键字:结果是 三倍 数据 循环 格式 JSON      更新时间:2023-09-26

我需要更改JSON格式化的数据,我想删除dataLevel JSON数组上第二列y中的引号。首先在代码后面,我使用此代码制作函数将数据表更改为 json 格式

public string DataTableToJSONWithStringBuilder(DataTable table) {
  var JSONString = new StringBuilder();
  if (table.Rows.Count > 0) {
    JSONString.Append("[");
    for (int i = 0; i < table.Rows.Count; i++) {
      JSONString.Append("{");
      for (int j = 0; j < table.Columns.Count; j++) {
        if (j < table.Columns.Count - 1) {
          JSONString.Append("'"" + table.Columns[j].ColumnName.ToString() + "'":" + "'"" + table.Rows[i][j].ToString() + "'",");
        } else if (j == table.Columns.Count - 1) {
          JSONString.Append("'"" + table.Columns[j].ColumnName.ToString() + "'":" + "'"" + table.Rows[i][j].ToString() + "'"");
        }
      }
      if (i == table.Rows.Count - 1) {
        JSONString.Append("}");
      } else {
        JSONString.Append("},");
      }
    }
    JSONString.Append("]");
  }
  return JSONString.ToString();
}

我通过jquery ajax获取数据,结果如下:

    {"d":"{ "dataLevel":[{"name":"KEBIJAKAN/PERATURAN","y":"1"},
{"name":"LAINNYA","y":"3"},{"name":"UTAMA","y":"3"}],
 "dataStatus" :[{"Level":"KEBIJAKAN/PERATURAN","Status":"BELUM DIMULAI","Level1":"KEBIJAKAN/PERATURAN","y":"1","Proyek":"PJM16.02.UTAMA PKE SOP Penjaminan"},{"Level":"LAINNYA","Status":"BELUM DIMULAI","Level1":"LAINNYA","y":"3","Proyek":"SKL16.02 Menyusun blueprint kegiatan sosial kemasyarakatan (CSR) LPS |SKL16.03.UTAMA Seminar/sosialisasi/FGD dengan lembaga tertentu (termasuk seminar HUT LPS, seminar/sosialisasi/FGD dengan melibatkan anggota FKSSK) |SKL16.04 Peningkatan hubungan kelembagaan, khususnya LPS-BI-OJK"},{"Level":"UTAMA","Status":"BELUM DIMULAI","Level1":"UTAMA","y":"1","Proyek":"SKL16.01.UTAMA Sosialisasi program penjaminan kepada masyarakat"},{"Level":"UTAMA","Status":"ACTIVE","Level1":"UTAMA","y":"2","Proyek":"GAI16.01.UTAMA Menyusun Pedoman Audit Kinerja |PSO16.01.UTAMA Penyusunan kajian organisasi LPS (cary over 2015)"}]}"}

然后在ASPX页面中,我做了这个JavaScript函数:

function getData(dataPie, tahun) {
  var dataz = jQuery.parseJSON(dataPie.d);
  var DataArray = dataz['dataLevel'];
  //  var data = JSON.stringify(DataArray);
  var countcolumn = countInObject(DataArray);
  console.log(DataArray);
  var JSONString = "";
  for (var i = 0; i < DataArray.length; i++) {
    JSONString += "[";
    for (var j = 0; j < countcolumn; j++) {
      JSONString += "{";
      if (j < countcolumn - 1) {
        JSONString += "name : '" + DataArray[j].name + "' , ";
        JSONString += "y :" + DataArray[j].y + " ";
        JSONString += "}, ";
      } else if (j == countcolumn - 1) {
        JSONString += "name : '" + DataArray[j].name + "', ";
        JSONString += "y : " + DataArray[j].y + "} ";
      }
    }
    if (i == DataArray.length - 1) {
      JSONString += " ";
    } else {
      JSONString += "}, ";
    }
    JSONString += "]";
  };

  return JSONString;
}

这是我得到的结果是三倍...:

[{name : 'KEBIJAKAN/PERATURAN' , y :1 }, {name : 'LAINNYA' , y :3 }, {name : 'UTAMA', y : 3} }, ][{name : 'KEBIJAKAN/PERATURAN' , y :1 }, {name : 'LAINNYA' , y :3 }, {name : 'UTAMA', y : 3} }, ][{name : 'KEBIJAKAN/PERATURAN' , y :1 }, {name : 'LAINNYA' , y :3 }, {name : 'UTAMA', y : 3}  ]

我想要的结果是:

[{name : 'KEBIJAKAN/PERATURAN' , y :1 }, {name : 'LAINNYA' , y :3 }, {name : 'UTAMA', y : 3}  ]

任何人都可以帮助我如何解决这个问题?

要将字符串转换为数字,只需遍历数据并将该值从字符串更改为数字

var dataz = jQuery.parseJSON(dataPie.d);
dataz['dataLevel'].forEach(function(item){
    item.y = +item.y || 0;
});