C# 解析嵌套的Json字符串。

假装努力的傻子 2018-03-02 10:21:27
目前得到的json字符串为:
{
"code":"0",
"message":"success",
"data":{
"totol":"100",
"Time":"2018-03-01"
}
}

model里面是:
public class get: BaseResultInfo
{
public string code { get; set; }
public string message { get; set; }
public list<data> MonthUsed { get; set; }
}

public class data
{
public string totol{ get; set; }
public string Time{ get; set; }
}
#endregion
我的目的是 既要得到code 和message的值 ,也要得到data里面每一项的值。最好是data里面的是list集合的那种。但是我现在得不到ata的值。我的代码是: getDetails model = JsonHelper.DeserializeJsonToObject<getDetails>(str);

请问有没有好的办法?
...全文
1117 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2018-03-02
  • 打赏
  • 举报
回复
json 中 "data":{ "totol":"100", "Time":"2018-03-01" } 是单个对象,只能定义为 public data MonthUsed { get; set; } 如果是 "data":[ { "totol":"100", "Time":"2018-03-01" } ] 才可以定义成 public list<data> MonthUsed { get; set; }
正怒月神 2018-03-02
  • 打赏
  • 举报
回复
引用 4 楼 abcd614110294 的回复:
data是model 不对啊。我用的是model 接收的啊,但是得不到data的值。
因为你的data是 list 而你的json是 不是泛型集合的。 你看我给的json,其中data是一个[]的数据 这也是你说的,需要内部是个集合。 如果你不了解json。那么应该先了解一下json的数据格式
  • 打赏
  • 举报
回复
引用 3 楼 hanjun0612 的回复:
看来你不了解 json定义啊 如果data是Model,那么你写的json就对了。如果data是 list,那么就应该在data中增加[]来代表,他是一个集合。
static void Main(string[] args)
        {
            string data = "{\"code\":\"0\",\"message\":\"success\",\"data\":[{\"totol\":\"100\", \"Time\":\"2018-03-01\"}]}";
            var q = JsonConvert.DeserializeObject<Test>(data);

            Console.ReadLine();
        }
        public class Test
        {
            public string code { get; set; }
            public string message { get; set; }
            public List<data> data { get; set; }
        }

        public class data
        {
            public string totol { get; set; }
            public string Time { get; set; }
        } 
data是model 不对啊。我用的是model 接收的啊,但是得不到data的值。
正怒月神 2018-03-02
  • 打赏
  • 举报
回复
看来你不了解 json定义啊
如果data是Model,那么你写的json就对了。如果data是 list,那么就应该在data中增加[]来代表,他是一个集合。

static void Main(string[] args)
{
string data = "{\"code\":\"0\",\"message\":\"success\",\"data\":[{\"totol\":\"100\", \"Time\":\"2018-03-01\"}]}";
var q = JsonConvert.DeserializeObject<Test>(data);

Console.ReadLine();
}
public class Test
{
public string code { get; set; }
public string message { get; set; }
public List<data> data { get; set; }
}

public class data
{
public string totol { get; set; }
public string Time { get; set; }
}



  • 打赏
  • 举报
回复
public class getDetails : BaseResultInfo { public string code { get; set; } public string message { get; set; } public List<data> MonthUsed { get; set; } } 补充一下,刚才写的不太对。
  • 打赏
  • 举报
回复
你的 getDetails 中并没有 data 属性定义啊?
  • 打赏
  • 举报
回复
我查的资料 :我是 C#处理包含对象的json数据 json数据:{"result":"0","res_info":"ok","queryorder_info":{"order_num":"5","orderdetail":"ok"}} 构造对象: public struct ToJsonMy2 { public string result { get; set; } public string res_info { get; set; } public queryorder_info queryorder_info; } public struct queryorder_info { public string order_num { get; set; } public string orderdetail { get; set; } }; 转换过程: public static void JsonMy2() { string json = Jsonstr("D:\\json\\jsonmy2.txt"); JavaScriptSerializer js = new JavaScriptSerializer(); //实例化一个能够序列化数据的类 ToJsonMy2 list = js.Deserialize<ToJsonMy2>(json); //将json数据转化为对象类型并赋值给list string result = list.result; string res_info = list.res_info; string order_num = list.queryorder_info.order_num; string orderdetail = list.queryorder_info.orderdetail; } 转换的过程 为什么还是得不到 queryorder_info 里面的值。
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
json 中 "data":{ "totol":"100", "Time":"2018-03-01" } 是单个对象,只能定义为 public data MonthUsed { get; set; } 如果是 "data":[ { "totol":"100", "Time":"2018-03-01" } ] 才可以定义成 public list<data> MonthUsed { get; set; }
那按照你说的,前者定义,那么怎么解析这个json字符串,才能得到data里面的值呢?

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧