如何在 JavaScript 中将字符串转换为 var 对象
How to convert string to var object in JavaScript
我正在开发一个带有网络浏览器控件的 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], [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","Gender":"Male"},
{"title":"Mr","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', 'Gender': 'Male'},
{ 'title': 'Mr', 'Name': 'Amy', 'Age': '32', 'Gender': 'Female'}]";
- 对于多行 string-literals,在 .NET 中,您需要逐字逐句地创建字符串,从
@
开始。只有这样,一个字符串字面量才允许超过一行。
- 您不能在字符串文字中使用
"
,因为这意味着 字符串文字的结尾 到 C#,因此编译器会报错。我已将您所有的 "
替换为 '
,因为 json 允许这样做。如果你真的需要 "
,你必须 转义序列 通过将所有 "
-> ""
加倍。 (这适用于以 @ 开头的逐字字符串,在正常的 C# 字符串文字中,您必须使用 \"
)
- JSON 用
,
分隔项目而不是 ;
- JSON 项列表必须封装在
[
和 ]
中
我正在开发一个带有网络浏览器控件的 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], [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","Gender":"Male"},
{"title":"Mr","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', 'Gender': 'Male'},
{ 'title': 'Mr', 'Name': 'Amy', 'Age': '32', 'Gender': 'Female'}]";
- 对于多行 string-literals,在 .NET 中,您需要逐字逐句地创建字符串,从
@
开始。只有这样,一个字符串字面量才允许超过一行。 - 您不能在字符串文字中使用
"
,因为这意味着 字符串文字的结尾 到 C#,因此编译器会报错。我已将您所有的"
替换为'
,因为 json 允许这样做。如果你真的需要"
,你必须 转义序列 通过将所有"
->""
加倍。 (这适用于以 @ 开头的逐字字符串,在正常的 C# 字符串文字中,您必须使用\"
) - JSON 用
,
分隔项目而不是;
- JSON 项列表必须封装在
[
和]
中