我对一些JS有点麻烦,希望有人可以提供帮助。
我有两个JSON字符串,使用jQuery通过AJAX收集,然后进行相应的解析。我遇到的问题是,如果我想要为我正在创建的应用程序添加新功能,JSON字符串将静态存储在数据库中,如果将新属性添加到默认JSON字符串,则不会更改。
var string1 = {
"col1": [
{
"foo": "bar"
}
],
"col2": [
{
"foo": "bar",
"bar": "foo"
}
],
"col3": [
{
"foo": "bar"
}
]
}
var string2 = {
"col1": [
{
"foo": "bar"
}
],
"col2": [
{
"foo": "bar"
}
]
}
string2
是用户保存的脚本,假设三天前已保存。从那时起,添加了默认字符串string1
,并且需要将信息添加到string2
。
任何人都可以帮忙吗?
答案 0 :(得分:13)
// Input:
var json_string = '{"name":"John"}';
// Convert JSON array to JavaScript object
var json_obj = JSON.parse( json_string );
// Add new key value pair "myData": "Helo World" to object
json_obj.myData = 'Hello World';
// Another more dynamic way to add new key/value pair
json_obj['myAnotherData'] = 'FooBar';
// Convert back to JSON string
json_string = JSON.stringify( json_obj );
// Log to console:
console.log( json_string );
{
"name": "John",
"myData": "Hello World",
"myAnotherData": "FooBar"
}
如果您想使用jQuery解析器或需要IE7支持,您可以替换
var json_obj = JSON.parse( json_string );
与
var json_obj = $.parseJSON( json_string );
不幸的是,jQuery无法将json_object
转换回JSON字符串,您需要另外一个插件或库。
答案 1 :(得分:1)
使用反斜杠:
“ {\” id \“:\” abc123 \“,\”成功\“:true}”
答案 2 :(得分:0)
未经测试,但这应该有效:
function updateJsonString(oldString, newString) {
var oldObj = JSON.parse(oldString), newObj = newString.parse(newString);
for(prop in newObj) {
if(newObj.hasOwnProp(prop)) {
if(!oldObj.hasOwnProp(prop)) {
oldObj[prop] = newObj[prop];
}
}
}
return JSON.stringify(oldObj);
}
var updatedString = updateJsonString(string2, string1);