问题描述
我正在开发带有Webbrowser控件的Windows应用程序。我想解析一个字符串并将其转换为JavaScript中的var对象。我在C#函数中创建的字符串,并将其发送到HTML页面上的JavaScript。字符串如下:
var str= "{"title": 'Mr',"Name": 'Samy',"Age": '30',"Gender": 'Male'};
{"title": 'Mrs',"Name": 'Sully',"Age": '25',"Gender": 'Female'};
{"title": 'Mr',"Name": 'John',"Age": '35',"Gender": 'Male'};
{"title": 'Mr',"Name": 'Amy',"Age": '32',"Gender": 'Female'}";
在下面的HTML页面JavaScript中:
var newStr= JSON.parse(str);
问题是它不起作用。如果我有一个字符串,那就行了。但是,当一组字符串不是字符串时。我想我需要用(;)分隔符来分割字符串。我需要的输出如下:
[object Object],[object Object],[object Object]
解决方法
尝试此代码:
var str = `{"title": "Mr","Name": "Samy","Age": "30","Gender": "Male"};
{"title": "Mrs","Name": "Sully","Age": "25","Gender": "Female"};
{"title": "Mr","Name": "John","Age": "35","Gender": "Male"};
{"title": "Mr","Name": "Amy","Age": "32","Gender": "Female"}`;
const data = str.split(';').map((obj) => JSON.parse(obj));
console.warn(data);
,
您可以只编辑输入字符串...
var str = `[{"title":"Mr","Name":"Samy","Age":"30","Gender":"Male"},{"title":"Mrs","Name":"Sully","Age":"25","Gender":"Female"},{"title":"Mr","Name":"John","Age":"35","Name":"Amy","Age":"32","Gender":"Female"}]`;
console.log(JSON.parse(str));
,
我不明白您的问题,但是您说您正在用C#创建字符串文字?在这种情况下,C#语法无效(应该给出编译错误)
我更正了:
var str = @"[{ 'title': 'Mr','Name': 'Samy','Age': '30','Gender': 'Male'},{ 'title': 'Mrs','Name': 'Sully','Age': '25','Gender': 'Female'},{ 'title': 'Mr','Name': 'John','Age': '35','Name': 'Amy','Age': '32','Gender': 'Female'}]";
- 对于.NET中的多行字符串文字,您需要以
@
开头来使字符串保持原状。只有这样,字符串文字才允许多于一行。 - 您不能在字符串文字中使用
"
,因为它对C#意味着字符串文字的结尾,因此编译器将给出错误。我已将您的所有"
替换为'
,因为json允许这样做。如果您确实需要"
,则必须通过将所有"
->""
加倍来转义序列。 (这适用于以@开头的逐字字符串,在常规C#字符串文字中,您必须使用\"
) - JSON用
,
而不是;
分隔项目 - 项目的JSON列表必须封装在
[
和]
中