将json字符串反序列化为对象c#.net

尼丁·卡布拉(Nitin Kabra)

我有一个JSON字符串,需要将其反序列化为一个对象。

这是我尝试过的:

班级 :

public class trn
{
    public string visited_date { get; set; }
    public string party_code { get; set; }
    public string response { get; set; }
    public string response_type { get; set; }
    public string time_stamp { get; set; }
    public string trans_id { get; set; }
    public double total_amount { get; set; }
    public double discount { get; set; }
}

json字符串:

string json = "{\"trn\":{\"visited_date\":\"2015-04-05\",\"party_code\":\"8978a1bf-c88b-11e4-a815-00ff2dce0943\",\"response\":\"Reason 5\",\"response_type\":\"NoOrder\",\"time_stamp\":\"2015-04-05 18:27:42\",\"trans_id\":\"8e15f00b288a701e60a08f968a42a560\",\"total_amount\":0.0,\"discount\":0.0}}";

trn model2 = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<trn>(json);

并使用json.net

trn model = JsonConvert.DeserializeObject<trn>(json);

但是所有属性都使用空值初始化。

乔恩·斯基特

您的JSON表示一个对象,该对象具有trn另一个对象内的属性。因此,您也需要在代码中表示它。例如:

using System;
using System.IO;
using Newtonsoft.Json;

public class Transaction
{
    [JsonProperty("visited_date")]
    public DateTime VisitedDate { get; set; }
    [JsonProperty("party_code")]
    public string PartyCode { get; set; }
    [JsonProperty("response")]
    public string Response { get; set; }
    [JsonProperty("response_type")]    
    public string ResponseType { get; set; }
    [JsonProperty("time_stamp")]
    public DateTime Timestamp { get; set; }
    [JsonProperty("trans_id")]
    public string TransactionId { get; set; }
    [JsonProperty("total_amount")]    
    public double TotalAmount { get; set; }
    [JsonProperty("discount")]
    public double Discount { get; set; }
}

public class TransactionWrapper
{
    [JsonProperty("trn")]
    public Transaction Transaction { get; set; }
}

class Test
{
    static void Main(string[] args)
    {
        string json = "{\"trn\":{\"visited_date\":\"2015-04-05\",\"party_code\":\"8978a1bf-c88b-11e4-a815-00ff2dce0943\",\"response\":\"Reason 5\",\"response_type\":\"NoOrder\",\"time_stamp\":\"2015-04-05 18:27:42\",\"trans_id\":\"8e15f00b288a701e60a08f968a42a560\",\"total_amount\":0.0,\"discount\":0.0}}";
        var wrapper = JsonConvert.DeserializeObject<TransactionWrapper>(json);
        Console.WriteLine(wrapper.Transaction.PartyCode);
    }
}

请注意,我如何使用该[JsonProperty]属性允许属性名称本身对.NET来说是惯用的,但是JSON属性名称仍要适当使用。我还更改了Transaction的类型VisitedDate最后,它稍微令人震惊的是total_amountdiscountdouble价值观-这真的不适合货币值。不幸的是,您可能无法控制它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将json字符串反序列化为.NET对象列表

C#Json.net将嵌套的json反序列化为字符串

使用Json.Net反序列化,将子对象反序列化为包含json的字符串/类似字符串?

将 JSON 反序列化为包含格式化为字符串的 Point 值的多态对象的 .NET 集合

使用JSON.NET将JSON数组反序列化为字符串数组

Json.net 将所有空字符串反序列化为 null

防止Json.NET将字符串数组反序列化为键值对数组

Protobuf-net将字符串字段反序列化为C#Guid

使用 json.net 将 JSON 反序列化为 c# 中的对象

将没有根对象的json反序列化为c#/ vb.net类

将JSON对象反序列化为.Net列表(C#)

将Json对象反序列化为.NET对象

将 json 反序列化为对象 json.net

将JSON字符串反序列化为本地时区中的.NET DateTime会增加两个小时

如何将JSON反序列化为.net对象

将JSON对象反序列化为.NET HashSet

将JSON反序列化为.net对象

将动态json反序列化为通用.NET对象

如何使用json.net将复杂的分离的(“列” /“数据”)json反序列化为c#对象

Json反序列化为对象C#Json.net

要反序列化为变量的 asp.net json 字符串

json.net反序列化为对象数组C#

无法使用Json.Net将certian json属性反序列化为c#属性

直接将Json.net JSON文件反序列化为C#字典类型?

将对象直接序列化为JObject而不是json.net中的字符串

使用字符串,int数组反序列化JSON-.net Core C#

使用Json.NET将F#区分的联合序列化为字符串

Json.NET即使使用默认设置也将枚举序列化为字符串

Json.net将数字属性序列化为字符串