首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将Json反序列化为对象?

如何将Json反序列化为对象?
EN

Stack Overflow用户
提问于 2019-05-16 11:28:58
回答 3查看 2.6K关注 0票数 1

我想把json转换成一个特定的对象。

String : "{\r\n \"Status\": \"PLANNED\"\r\n}"

我尝试了Newtonsoft命名空间,但是它返回了一个空值。

var Json= Newtonsoft.Json.JsonConvert.DeserializeObject<Model Class>(String )

我想要Json格式的结果,这样我就可以按“计划”从Json中提取值,但是我得到的是null。

PS:模型类包含两个属性,名称(字符串类型)和值(对象类型)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-16 11:40:11

代码语言:javascript
运行
复制
var s = "{\r\n  \"Status\": \"PLANNED\"\r\n}";
var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<StatusModel>(s);

您定义的模型不正确。你的模型应该是这样的:

代码语言:javascript
运行
复制
public class StatusModel
{
    public string Status { get; set; }
}

现在,值将被提取到该模型中,您可以访问以下值:

代码语言:javascript
运行
复制
var value = obj.Status; //"PLANNED"
票数 4
EN

Stack Overflow用户

发布于 2019-05-16 12:01:57

JSON定义

JSON (JavaScript对象表示法)是一种轻量级数据交换格式.对人类来说读和写是很容易的。机器很容易解析和生成。它基于JavaScript编程语言的一个子集。

Source

JSON牛顿软

Json.NET是一个流行的.NET高性能JSON框架。

Source

问题:

您正在尝试将json反序列化到一个对象,而它正在返回一个null。在我们的上下文中,Deserialization是将json转换为对象的进程。

var Result= Newtonsoft.Json.JsonConvert.DeserializeObject<Model Class>(String);

因此您有一个,因为您知道 json 不对应 Model ,所以要将Json反序列化到模型,这就是为什么Json需要对应于Modele 224,这样才能存储<>E 125JsonE 226的信息。

您的模型:

模型可能包含一些不在json中的属性,反之亦然。

代码语言:javascript
运行
复制
public class StatusModel
{
   public string Status { get; set; }
}

致以最良好的问候。

票数 0
EN

Stack Overflow用户

发布于 2019-05-16 12:54:27

您可以这样做(使用Newtonsoft )

代码语言:javascript
运行
复制
using System;
using Newtonsoft.Json;
{
    public class JsonHandler : IJsonHandler
    {
        public IJsonModel ReadJson(IJsonModel model, StreamReader reader)
        {
            try
            {
                string jsonFromFile;
                using (reader))
                {
                    jsonFromFile = reader.ReadToEnd();
                }

                status = JsonConvert.DeserializeObject<model>(jsonFromFile);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            return status;
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56167539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档