【问题标题】:How to convert a string to json object in c# [duplicate]如何在c#中将字符串转换为json对象[重复]
【发布时间】:2015-10-13 05:25:38
【问题描述】:

我试图将我的字符串转换为 json 对象,但我得到了一个错误的 json 字符串。

我的代码

public class mystring
{
    public string str { get; set; }
}

mystring myst = new mystring
{
    str = "Login successfully"
};

var javaScriptSerializer = new
System.Web.Script.Serialization.JavaScriptSerializer();
string jsonString = javaScriptSerializer.Serialize(myst);
return jsonString;

但我得到了这样的结果"{\"str\":\"Login successfully\"}"。为什么会发生这种情况,任何想法?帮助我摆脱这个问题..

【问题讨论】:

  • 因为这是一个json对象而不是错误!
  • @WaqarAhmed: 不,那不是 json 字符串,我只是用 json 验证器检查
  • @hakkeem 争论很多吗?他是对的。现在,如果您想将 JSON 转换为 JSON 与 .NET JSON 转换为 JSON,那么您就有不同的故事了。
  • 你是怎么得到那个字符串的?你在调试器中看到了吗?因为如果您这样做了,调试器值检查器将在引号前添加反斜杠,实际上您的字符串只包含以下内容:{"str":"Login successfully"}

标签: c#


【解决方案1】:

没问题,这是有效的 Json 字符串。

验证器失败,因为当您从 VisualStudio 复制此值时,它也会显示字符转义。 (反斜杠)例如(\")

您可以了解更多关于Escape Sequences here.

实际上,您的字符串包含{"str":"Login successfully"}。 你可以检查一下,它是有效的JSON。

【讨论】:

  • :好的,很好,我知道这个 {"str":"Login successfully"} 是一个有效的 json,所以我想从我的字符串中删除反斜杠和双引号。
【解决方案2】:

在 NuGet 中查找库 Json.Net (Newtonsoft Json)。

https://www.nuget.org/packages/newtonsoft.json/

【讨论】:

    【解决方案3】:

    "{\"str\":\"Login successfully\"}" 是一个有效的包含 json 的字符串。作为证明:

    • 打开 Chrome
    • 按 ctrl+shift+j
    • 转到控制台选项卡
    • 写这个:var obj = JSON.parse("{\"str\":\"Login successfully\"}")
    • 按回车
    • 输入obj.str查看结果“登录成功”

    只是当您在调试模式下将鼠标悬停在变量上时,它会显示如下。

    【讨论】:

    • 不,这是一个有效的 string 包含 json。
    • 更新了,好看吗?
    猜你喜欢
    • 2012-07-05
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多