如何在JavaScript中创建JSON字符串?
在类似这样的代码中,我尝试创建JSON字符串只是为了玩。这是一个错误,但如果我把所有的名字、年龄、婚姻都放在一行(第2行),就不会了。有什么问题吗?使用如何在JavaScript中创建JSON字符串?,javascript,json,Javascript,Json,在类似这样的代码中,我尝试创建JSON字符串只是为了玩。这是一个错误,但如果我把所有的名字、年龄、婚姻都放在一行(第2行),就不会了。有什么问题吗?使用JSON.stringify: window.onload = function(){ var obj = '{ "name" : "Raj", "age" : 32, "married" : false }'; var val =
JSON.stringify
:
window.onload = function(){
var obj = '{
"name" : "Raj",
"age" : 32,
"married" : false
}';
var val = eval('(' + obj + ')');
alert( "name : " + val.name + "\n" +
"age : " + val.age + "\n" +
"married : " + val.married );
}
json字符串中不能有换行符。您必须将其全部设置为一行:
{“key”:“val”,“key2”:“val2”,等等……}
但不要自己生成JSON字符串。有很多库可以为您实现这一点,其中最大的库是。免责声明:这不是在JavaScript中创建JSON的最佳方法的答案。这个答案主要解决了“问题是什么?”或者为什么上面的代码不起作用的问题——这在JavaScript中是一个错误的字符串连接尝试,并且没有解决为什么字符串连接首先是创建JSON字符串的一种非常糟糕的方式 有关创建JSON的最佳方法,请参见此处: 阅读此答案,了解上面的代码示例不起作用的原因 Javascript不处理多行上的字符串 您将需要连接以下各项:
> JSON.stringify({ asd: 'bla' });
'{"asd":"bla"}'
您还可以在ES6及更高版本中使用模板文本:()
函数JSON.stringify将把JSON对象转换为字符串:
var obj = `{
"name" : "Raj",
"age" : 32,
"married" : false,
}`;
如果浏览器没有实现它(IE6/IE7),请使用脚本。它是安全的,因为它使用本机实现(如果存在)。我这样做的方式是:
var jsonAsString = JSON.stringify(obj);
我想这种方法可以减少出错的机会。我认为这种方法有助于你
var obj = new Object();
obj.name = "Raj";
obj.age = 32;
obj.married = false;
var jsonString= JSON.stringify(obj);
var name=[];
var年龄=[];
name.push('sulfikar');
年龄。推挤('24');
var ent={};
对于(var i=0;i这可能非常简单
var name=[];
var age=[];
name.push('sulfikar');
age.push('24');
var ent={};
for(var i=0;i<name.length;i++)
{
ent.name=name[i];
ent.age=age[i];
}
JSON.Stringify(ent);
看到这个答案,JSON可以有换行符,但JavaScript字符串文字语法不能。是的,在字符串内部,但不是在键/值对之间。我认为您混淆了JavaScript字符串文字语法(不能包含未换行的换行符)和JSON标记。JSON标记肯定可以包含换行符……粘贴代码在您的问题中,输入(当然没有等…)。单击“验证”后,您将看到它在漂亮打印时实际上插入了换行符。或者在文本中的每行末尾添加\号。对于多行字符串,您可以使用`(在#1键左侧的回勾字符)。这些被称为“模板文字”。明确地说:不要满足于这个答案,看看其他答案。模板文字是ECMA脚本2015标准。这个问题和答案已经从2012年开始。但我会在中编辑:)真的吗?从头开始的字符串连接是构建JSON的最佳方式?我认为另一个答案应该是公认的答案。还要看看你是否需要支持较旧的浏览器。是的,这里有一个指向他的GitHub项目列表的链接:@nepsdotin Douglas at SO is not Douglas Crockford,“to his GitHub”啊,错过了,不,我不是Crockford!如果您想给树赋予深度,代码会是什么样子?我想给name.firstname和name.lastname取个名字。我需要将name定义为var吗?
var name=[];
var age=[];
name.push('sulfikar');
age.push('24');
var ent={};
for(var i=0;i<name.length;i++)
{
ent.name=name[i];
ent.age=age[i];
}
JSON.Stringify(ent);
var obj = new Object();
obj.name = "Raj";
obj.age = 32;
obj.married = false;
//convert object to json string
var string = JSON.stringify(obj);
//convert string to Json Object
console.log(JSON.parse(string)); // this is your requirement.