替换 JSON 对象中的值
Replacing values in JSON object
我有以下 JSON 对象 data
从我的 apicontroller 返回:
[
{"id":2,"text":"PROGRAMME","parent":null},
{"id":3,"text":"STAGE","parent":2},
{"id":4,"text":"INFRA","parent":2},
{"id":5,"text":"SYSTEM","parent":3},
{"id":6,"text":"STOCK","parent":3},
{"id":7,"text":"DPT","parent":3},
{"id":9,"text":"EXTERNAL","parent":null}
]
我想用"parent":'"#"'
替换"parent":null
我试过下面的代码,但它只是替换了第一次出现的 "parent":null
。如何替换所有 "parent":null
条目?
$(document).ready(function () {
$.ajax({
url: "http://localhost:37994/api/EPStructures2/",
type: "Get",
success: function (data) {
var old = JSON.stringify(data).replace(null, "'#'"); //convert to JSON string
var new = JSON.parse(old); //convert back to array
},
error: function (msg) { alert(msg); }
});
});
谢谢,
您需要将替换设为全局:
var old = JSON.stringify(data).replace(/null/g, '"#"'); //convert to JSON string
var newArray = JSON.parse(old); //convert back to array
这样它将继续替换空值,直到到达末尾
正则表达式文档:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp
此外,作为旁注,您应该避免使用 new
作为变量名,因为它是 javascript 中的保留字,并且大多数浏览器不允许您使用使用它
@JonathanCrowe 的回答对于正则表达式是正确的,但这是正确的选择吗?特别是如果你有很多项目,你最好修改已解析的对象,而不是通过 JSON.stringify
运行 来获得正则表达式解决方案:
data.forEach(function(record) {
if (record.parent === null) {
record.parent = "#";
}
});
除了速度更快之外,这不会意外替换您想保留的其他空值,也不会弄乱 { text: "Denullification Program"}
.
这样的记录
我有以下 JSON 对象 data
从我的 apicontroller 返回:
[
{"id":2,"text":"PROGRAMME","parent":null},
{"id":3,"text":"STAGE","parent":2},
{"id":4,"text":"INFRA","parent":2},
{"id":5,"text":"SYSTEM","parent":3},
{"id":6,"text":"STOCK","parent":3},
{"id":7,"text":"DPT","parent":3},
{"id":9,"text":"EXTERNAL","parent":null}
]
我想用"parent":'"#"'
"parent":null
我试过下面的代码,但它只是替换了第一次出现的 "parent":null
。如何替换所有 "parent":null
条目?
$(document).ready(function () {
$.ajax({
url: "http://localhost:37994/api/EPStructures2/",
type: "Get",
success: function (data) {
var old = JSON.stringify(data).replace(null, "'#'"); //convert to JSON string
var new = JSON.parse(old); //convert back to array
},
error: function (msg) { alert(msg); }
});
});
谢谢,
您需要将替换设为全局:
var old = JSON.stringify(data).replace(/null/g, '"#"'); //convert to JSON string
var newArray = JSON.parse(old); //convert back to array
这样它将继续替换空值,直到到达末尾
正则表达式文档:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp
此外,作为旁注,您应该避免使用 new
作为变量名,因为它是 javascript 中的保留字,并且大多数浏览器不允许您使用使用它
@JonathanCrowe 的回答对于正则表达式是正确的,但这是正确的选择吗?特别是如果你有很多项目,你最好修改已解析的对象,而不是通过 JSON.stringify
运行 来获得正则表达式解决方案:
data.forEach(function(record) {
if (record.parent === null) {
record.parent = "#";
}
});
除了速度更快之外,这不会意外替换您想保留的其他空值,也不会弄乱 { text: "Denullification Program"}
.