Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON.parse可以';“我不认识\”;(反斜杠和引号)在要分析的字符串中_Javascript_C#_Json - Fatal编程技术网

Javascript JSON.parse可以';“我不认识\”;(反斜杠和引号)在要分析的字符串中

Javascript JSON.parse可以';“我不认识\”;(反斜杠和引号)在要分析的字符串中,javascript,c#,json,Javascript,C#,Json,我已经序列化了JSON,其中的对象在字符串中有引号,如下所示: var bla = [ { "label": "person", "id": "1", "data": "bla means: \"lala\"" } ]; 我知道它在服务器端的外观。但当我在浏览器中调试它时,我发现我收到了错误,因为它如下所示: var bla = [ { "label": "person", "i

我已经序列化了JSON,其中的对象在字符串中有引号,如下所示:

var bla = [
    { 
        "label": "person", 
        "id": "1", 
        "data": "bla means: \"lala\"" 
    }
];
我知道它在服务器端的外观。但当我在浏览器中调试它时,我发现我收到了错误,因为它如下所示:

var bla = [
    { 
        "label": "person", 
        "id": "1", 
        "data": "bla means: "lala"" 
    }
];
我的错误是:

未捕获的语法错误:JSON中位于位置25处的意外标记l JSON.parse()

我读到JSON应该识别\“

我应该在哪里纠正它呢?在序列化对象时在服务器端还是在使用JavaScript的客户端

编辑:

在服务器端,我使用C#library
“System.Web.Script.Serialization”
要序列化的对象:

List<SomeObject> someObject= new List<SomeObject>();
        SomeObject bla1 = new SomeObject();
        bla1.id = "1";
        bla1.label = "person";
        bla1.label = "bla means: \"lala\"";
        someObject.Add(bla1);
List someObject=new List();
SomeObject bla1=新的SomeObject();
bla1.id=“1”;
bla1.label=“person”;
bla1.label=“bla的意思是:\“拉拉”;
someObject.Add(bla1);
var bla=new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(someObject);

摘要

我修复了服务器端的序列化字符串,因为我使用的API不能操作这些对象。
var bla=new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(someObject)。替换(“\\\”、“\\\\”);

服务器应提供可直接解析的正确序列化JSON,而客户端无需首先对数据进行复杂的字符串操作。(例如,如果您不在服务器端修复它,那么
获取(…)将变得无效。然后(res=>res.json())

服务器应该提供可以直接解析的正确序列化json,而客户端不必首先对数据进行复杂的字符串操作。(例如,如果您不在服务器端修复它,那么
获取(…)将变得无效。然后(res=>res.json())

您可以尝试使用双反斜杠或三反斜杠,如
\\”或\\\\”


它将添加反斜杠并用双引号打印。

您可以尝试使用双反斜杠或三反斜杠,如
\\”或\\\“


它将添加反斜杠并用双引号打印。

我不完全理解您的项目结构,但是:

反斜杠是javascript中的一个特殊字符

它之所以特别是因为它有一个正则表达式的特殊含义

  • 编写
    \hello
    时,您的输出将是
    hello
  • 编写
    \'hello
    时,您的输出将是
    'hello
  • 编写
    \“hello\”
    时,您的输出将是
    “hello”
  • 我认为您应该首先选择如何准确地格式化
    数据
    属性

    您希望数据是字符串?数组?对象?将所有引号保留为双引号或单引号的字符串

    看看这里-

    并决定要使用的字符串格式


    如果你想转义一个字符(实际上意味着它在你的字符串中),你应该在这个字符之前添加
    \

    我不完全理解你的项目结构,但是:

    反斜杠是javascript中的一个特殊字符

    它之所以特别是因为它有一个正则表达式的特殊含义

  • 编写
    \hello
    时,您的输出将是
    hello
  • 编写
    \'hello
    时,您的输出将是
    'hello
  • 编写
    \“hello\”
    时,您的输出将是
    “hello”
  • 我认为您应该首先选择如何准确地格式化
    数据
    属性

    您希望数据是字符串?数组?对象?将所有引号保留为双引号或单引号的字符串

    看看这里-

    并决定要使用的字符串格式

    如果你想转义一个字符(这实际上意味着它在你的字符串中),你应该在这个字符前面加上
    \

    在我的例子中,我只是使用

    JSON.parse(`{“key”:“\”“}`)//失败
    JSON.parse(String.raw`{“key”:“\”“}`)//work
    
    在我的例子中,我只是使用

    JSON.parse(`{“key”:“\”“}`)//失败
    JSON.parse(String.raw`{“key”:“\”“}`)//work
    

    这可能是服务器端的问题。您应该使用标准的JSON库,而不是自己尝试序列化。但就像我在JSON.org上读到的一样,它应该能够识别\“符号,并且不应该有问题。但是从另一方面讲,当您使用
    console.log()时,就没有机会在字符串中使用引号了
    在带有嵌入引号的字符串上,它不会显示作为文本或JSON输入所需的反斜杠。发布创建JSON的代码。文档建议使用JSON.NET而不是JavaScriptSerializer。这可能是服务器端的问题。您应该使用标准JSON库,而不是尝试使用Java进行序列化但就像我在json.org上读到的一样,它应该认识到\“符号和不应该有问题。但从另一方面来说,当您使用
    console.log()时,就没有机会在字符串中使用引号了
    在带有嵌入引号的字符串上,它不会显示作为文本或JSON输入所需的反斜杠。发布创建JSON的代码。文档建议使用JSON.NET而不是JavaScriptSerializery。解决方案可行。但编程很难,因为我使用API从中获取这些字符串。这意味着你不能添加双反斜杠?您使用的是哪种API?举个例子。我需要将其添加到序列化字符串中,或者只是剪切\“,但我不想这样做。或者说,这是唯一的方法?API示例:是的,这是唯一的方法,因为“\”被用作转义序列的一部分,这就是服务器无法识别字符串中双引号的原因。它正在处理\“作为一个转义序列。是的,你的解决方案是有效的。但编程很难,因为我使用API从我得到的字符串。这是什么?”
    var bla = [
        { 
            "label": "person", 
            "id": "1", 
            "data": "bla means: \\"lala\\"" 
        }
    ];