替换 JSON 对象中的值
Posted
技术标签:
【中文标题】替换 JSON 对象中的值【英文标题】:Replacing values in JSON object 【发布时间】:2015-04-22 17:51:07 【问题描述】:我的 apicontroller 返回了以下 JSON 对象 data
:
[
"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);
);
);
谢谢,
【问题讨论】:
【参考方案1】:您需要将替换设为全局:
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 中的保留字,大多数浏览器不允许您使用它
【讨论】:
很明显,尽管我自己也遇到了麻烦。谢谢!【参考方案2】:@JonathanCrowe 的答案对于正则表达式是正确的,但这是正确的选择吗?特别是如果您有很多项目,您最好修改已解析的对象,而不是通过JSON.stringify
运行它以获得正则表达式解决方案:
data.forEach(function(record)
if (record.parent === null)
record.parent = "#";
);
除了更快之外,这不会意外替换您想要保留的其他空值,或弄乱 text: "Denullification Program"
之类的记录。
【讨论】:
完全同意这一点,如果您只想替换空的“父”键,那么使用这种方法肯定会更好,以避免任何不必要的副作用以上是关于替换 JSON 对象中的值的主要内容,如果未能解决你的问题,请参考以下文章
如何将 JSON 中的值替换为 RegEx 在使用 Python 的文件中找到的值?
NSPredicates 可以用来用字典中的值替换数组中的对象吗?