为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 JSON 模型访问值

如何从 JSON 模型访问值

C#
慕桂英546537 2021-11-07 19:52:33
在此代码中,我将值设置为来自JSON名为myJson.code 的文件的模型类工作正常,并且值绑定到模型类没有任何问题。我的代码如下。class Program{    static void Main(string[] args)    {         ReadJson();    }    public static string ReadJson()    {        string case20 = "this is 20", case40 = "this is 40";        string json;        using (StreamReader r = new StreamReader(@"C:\Users\HP\Desktop\Output\myJson.json"))        {            json = r.ReadToEnd();        }        MyClass response = JsonConvert.DeserializeObject<MyClass>(json);        var dropDowns = response;        string jsonDropdown = JsonConvert.SerializeObject(dropDowns, Formatting.Indented);        return "";    }}这是我的模型类:public class Customer{    public int RATE { get; set; }    public int FEE { get; set; }    public int PERIOD { get; set; }    public string NewValue    {        get        {            var rateVal = this.RATE;            switch (rateVal)            {                case 20:                    return ""; // Here, I need to get value from the ReadJson method to return (value of case20)                case 40:                    return ""; // Here, I need to get value from the ReadJson method to return (value of case40)            }            return "test";        }    }}public class MyClass{    public string StatusCode { get; set; }    public Customer Customer { get; set; }    public object LoanDetail { get; set; }}之后,我设置的值,以模型类,从Customer类我要检查的RATE,为了的价值RATE我想返回的值case20,并case40在变量值ReadJson()的方法。我如何访问这些值表单Customer类。提前致谢!!!
查看完整描述

3 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

根据下面更改您的代码,它会执行您想要的操作。但是我仍然无法理解为什么在您已经拥有 RATE 属性的情况下还需要 NewValue 属性。它们不具有相同的价值吗?您根据 RATE 设置 NewValue,为什么不在任何地方只使用 RATE?


    public static string ReadJson()

    {

        string json = File.ReadAllText(@"C:\Users\HP\Desktop\Output\myJson.json");


        MyClass response = JsonConvert.DeserializeObject<MyClass>(json);


        return JsonConvert.SerializeObject(response, Formatting.Indented);

    }


public class Customer


{

    public int RATE { get; set; }

    public int FEE { get; set; }

    public int PERIOD { get; set; }


    public string NewValue

    {

        get

        {

            switch (RATE)

            {

                case 20:

                    return "this is 20";

                case 40:

                    return "this is 40";

                default:

                    return "";

            }

        }

    }

}


public static void Main(string[] args)


    {

        Console.WriteLine(ReadJson());

    }

输出是:


{

  "StatusCode": "100",

  "Customer": {

    "RATE": 20,

    "FEE": 3000,

    "PERIOD": 60,

    "NewValue": "this is 20"

  },

  "LoanDetail": null

}


查看完整回答
反对 回复 2021-11-07
?
长风秋雁

TA贡献1757条经验 获得超7个赞

您的函数正在将字符串中的 JSON 数据读取到您的客户对象中。

不应该在客户对象或程序中设置 case20 & case40 吗?

您没有从我能看到的任何地方读取 JSON 中的 case20 或 40 个字符串。所以我假设他们的输出在运行程序时不会动态改变。

你也var rateVale = this.rate;应该像var rateVal = int.Parse(this.rate);你将它作为一个整数进行比较。无论是那个还是 switch case 都应该是“20”而不是 20 等。

您能否包含您拥有的代码示例以及适当的对象值应该是什么以及 newValue 参数的输出?


查看完整回答
反对 回复 2021-11-07
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

感谢所有帮助我解决这个问题的人。我找到了解决我的问题的方法。


我创建了一个静态类,名为TestCase.


public static class TestCase

{

    public static string case20 { get; set; }

    public static string case40 { get; set; }

}

然后将值设置为 ReadJson()


public static string ReadJson()

{

    TestCase.case20 = "this is 20";

    TestCase case40 = "this is 40";

    // same code has beign used....

}

然后在Customer类中,我按如下方式访问这些值。


public class Customer


{

    public int RATE { get; set; }

    public int FEE { get; set; }

    public int PERIOD { get; set; }


    public string NewValue

    {

        get

        {

            switch (RATE)

            {

                case 20:

                    return TestCase.case20;

                case 40:

                    return TestCase.case40;

                default:

                    return "";

            }

        }

    }

}


查看完整回答
反对 回复 2021-11-07
  • 3 回答
  • 0 关注
  • 171 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信