如何在 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 项列表必须封装在 []