繁体   English   中英

如何将字符串(带有 scape 字符的 json)转换为动态对象?

[英]How to convert a string (json with scape chars) to dynamic object?

大家好,我正在尝试转换如下所示的字符串:

"{\\"Estado\\":true,\\"Token\\":\\"3D16C8D8-058C-4FA7-AEA2-1A764A083B72\\",\\"Nombre\\":\\"Agente COV\\"}"

如果我在代码运行时进行快速检查,它看起来像这样:

在此处输入图片说明

应用以下代码行后:

var Datos = JsonConvert.DeserializeObject<dynamic>(Resultado);

它返回带有两个花括号的对象

{{"Estado": true, "Token": "3D16C8D8-058C-4FA7-AEA2-1A764A083B72", "Nombre": "Agente COV"}}

在此处输入图片说明

将字符串转换为动态对象后,如何避免使用这两个花括号?

最后我需要像这样使用它:

var foo = Datos.Token.Value;

非常感谢您的帮助。

您看到的效果(字符串和大括号中的转义引号)正是调试器选择显示这些值的方式。

"{\"Estado\":true,\"Token\":\"3D16C8D8-058C-4FA7-AEA2-1A764A083B72\",\"Nombre\":\"Agente COV\"}"

实际上是一个包含

{"Estado":true,"Token":"3D16C8D8-058C-4FA7-AEA2-1A764A083B72","Nombre":"Agente COV"}

{{"Estado": true, "Token": "3D16C8D8-058C-4FA7-AEA2-1A764A083B72", "Nombre": "Agente COV"}}

调试器如何选择显示具有 3 个属性和值的动态对象

  • 埃斯塔多 - 真实
  • 令牌 - “3D16C8D8-058C-4FA7-AEA2-1A764A083B72”
  • Nombre - “代理 COV”

我解决这个问题的最简单方法是为 JSON 创建一个类

public class MyObject{
    public bool Estado { get; set; }
    public Guid Token { get; set; }
    public string Nombre { get; set; }
}

然后你可以使用 Json.Net 反序列化它。

var json = "{\"Estado\":true,\"Token\":\"3D16C8D8-058C-4FA7-AEA2-1A764A083B72\",\"Nombre\":\"Agente COV\"}";
var myObject = JsonConvert.DeserializeObject<MyObject>(json);

然后访问像myObject.Token等值。

你可以先解析你的json

dynamic Datos = JObject.Parse(yourjson);

并通过检索值

var foo = Datos.Token

注意 - JObject 来自 newtonsoft

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM