如何在JavaScript中将字符串转换为var对象

问题描述

我正在开发带有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列表必须封装在[]