第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在 C# 中反序列化 JSON 文件

在 C# 中反序列化 JSON 文件

C#
ibeautiful 2022-10-23 16:27:43
我不斷收到以下錯(cuò)誤:你調(diào)用的對(duì)象是空的這是我在 C:\part_param.json 文件中的 Json 字符串{        "part_parameters" : {        "bar_diameter" : 300.4,        "core_height" : 132,       "roughing_offset" : 0.3        } }我使用的代碼如下:    public class PLMpartParameter    {        public class Parameters        {            public float bar_diameter;            public float core_height;            public float roughing_offset;            public Parameters(float barD, float coreH, float roughingO)            {                bar_diameter = barD;                core_height = coreH;                roughing_offset = roughingO;            }        }        public Parameters parameters;        public PLMpartParameter(Parameters param)        {            parameters = param;        }    }    public static void LoadJson()    {        using (System.IO.StreamReader r = new System.IO.StreamReader(@"C:\part_param.json"))        {            string json = r.ReadToEnd();            _logger.Info(string.Format("Read entire file complete. File Values: {0}", json));            try            {                PLMpartParameter part = Newtonsoft.Json.JsonConvert.DeserializeObject<PLMpartParameter>(json);            }            catch (Exception e)            {                _logger.Info(string.Format("Read Json failed {0}", e.Message));            }        }我在這里想念什么?
查看完整描述

4 回答

?
猛跑小豬

TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊

我認(rèn)為問題在于您的屬性稱為“參數(shù)”,但在您的 json 中它是“part_parameters”。



查看完整回答
反對(duì) 回復(fù) 2022-10-23
?
qq_花開花謝_0

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊

您必須在屬性上方添加 JSON 屬性,以便在反序列化對(duì)象時(shí)識(shí)別您的屬性。


你會(huì)在下面找到一個(gè)例子


public class Parameters

{

    [JsonProperty("bar_diameter")]

    public float bar_diameter;

    [JsonProperty("core_height")]

    public float core_height;

    [JsonProperty("roughing_offset")]

    public float roughing_offset;


    public Parameters(float barD, float coreH, float roughingO)

    {

        bar_diameter = barD;

        core_height = coreH;

        roughing_offset = roughingO;

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-10-23
?
楊__羊羊

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊

引用 Prasad Telkikar 的回答,因?yàn)樗R上就解決了


使用 json2csharp 為您的 json 文件獲取模型,然后反序列化您的 json。您可以在構(gòu)建功能中使用 Visual Studio 來創(chuàng)建類,即編輯 -> 特殊粘貼 -> 將 JSON 粘貼為類


這是上課


> public class PartParameters {

>     public double bar_diameter { get; set; }

>     public int core_height { get; set; }

>     public double roughing_offset { get; set; } }

> public class RootObject {

>     public PartParameters part_parameters { get; set; } }

要反序列化,請(qǐng)使用以下代碼


PLMpartParameter 部分 = Newtonsoft.Json.JsonConvert.DeserializeObject(json);


我的最終代碼看起來像這樣,它的工作原理!


    public class PartParameters

    {

        public double bar_diameter { get; set; }

        public int core_height { get; set; }

        public double roughing_offset { get; set; }

    }


    public class RootObject

    {

        public PartParameters part_parameters { get; set; }

    }


    public static void LoadJson()

    {

        using (System.IO.StreamReader r = new System.IO.StreamReader(@"C:\part_param.json"))

        {

            string json = r.ReadToEnd();

            try

            {

                RootObject part = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(json);


                _logger.Info(string.Format("list values : bardiameter: {0}, coreHeight: {1}, roughingOffset: {2}", 

                    part.part_parameters.bar_diameter,part.part_parameters.core_height, part.part_parameters.roughing_offset));

            }

            catch (Exception e)

            {

                _logger.Info(string.Format("Read Json failed {0}", e.Message));

            }


        }


    }


查看完整回答
反對(duì) 回復(fù) 2022-10-23
?
GCT1015

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊

您的代碼有一些問題:

  1. 您需要為類提供默認(rèn)構(gòu)造函數(shù)(這是由于序列化程序如何處理類型 - 它們不會(huì)理解您的特定于類的參數(shù)化構(gòu)造函數(shù))。

  2. 您的字段需要是可設(shè)置的屬性(只需添加就{get;set;}可以了)。

  3. 我建議您使用來裝飾parameters屬性[JsonProperty("part_parameters")]以獲得您期望的反序列化行為。


查看完整回答
反對(duì) 回復(fù) 2022-10-23
  • 4 回答
  • 0 關(guān)注
  • 180 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)