c# - 如何将字符串(带有 scape 字符的 json)转换为动态对象?
问题描述
大家好,我正在尝试转换如下所示的字符串:
"{\"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 个属性和值的动态对象
- Estado - 真的
- 令牌 - “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
。
推荐阅读
- java - 如何转换为 kotlin window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
- python - 如何在 Python 中解决这个递归函数?
- java - 在 Recyclerview 中使用 RecyclerView 在 Firestore 中查询要显示的项目
- mysql - MySQL Query - 计算多个表之间的值并按 id 分组
- c# - 如何处理从 bot 框架 v4 中的技能收到的活动?
- docker - 有没有办法在容器中获取容器名称?
- sql - Oracle SQL - 加入和拥有
- ruby-on-rails - 从运行在 Minikube 集群上的 rails 应用程序访问本地 postgres 数据库
- linux - 如何在gid检查下替换文件?
- python - 试图从 git pull 中删除身份验证会创建奇怪的合并冲突和不应该存在的更改