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

时间:2019-05-16 11:28:58

标签: c# json json.net

我想将json转换为特定对象。

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

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

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

我想要Json格式的结果,以便可以将Json的值提取为“ PLANNED”,但是我得到的是空值。

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

3 个答案:

答案 0 :(得分:4)

var s = "{\r\n  \"Status\": \"PLANNED\"\r\n}";
var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<StatusModel>(s);

您定义的模型不正确。 您的模型应如下所示:

public class StatusModel
{
    public string Status { get; set; }
}

现在将值提取到该模型,您可以像以下那样访问该值:

var value = obj.Status; //"PLANNED"

答案 1 :(得分:0)

  

JSON定义

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

[来源] https://www.json.org/

  

JSON Newtonsoft

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

[来源] https://www.newtonsoft.com/json

问题:

您正在尝试将json反序列化为对象,并且返回null。 在我们的上下文中,反序列化是将json转换为对象的过程。

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

结果为 Null 的原因是,因为您知道 Json Model < / strong>,这就是 Json 需要与 Model 相对应的原因,以便它可以存储 Json 的信息。

您的模型:

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

public class StatusModel
{
   public string Status { get; set; }
}

最好的问候。

答案 2 :(得分:0)

您可以这样做(使用Newtonsoft Framework)

User.find({bankaccname: {$exists: 1}}, function(err,user){
    user.forEach(function(st){
        let num = st.bankaccnum;
        st.bankaccnum = new String(st.bankaccnum);
        st.save(function(err,saved){
            if(err){
                console.log(err)
            } else {console.log(typeof saved.bankaccnum)}
        })
    })
})