求助各位大侠,下面的这种JSON我要解析为实体类,如何定义这个类?

W2KEXP 2020-02-10 03:59:58
求助各位大侠,下面的这种JSON我要解析为实体类,如何定义这个类?
    {
"row": [
{
"cname": [
"李刚"
],
"ctype": [
"医生"
]
},
{
"cname": [
"王明"
],
"ctype": [
{}
]
}
]
}

“cname”定义为string[],“ctype”应该定义为什么类型?如何处理下面这个空值?
...全文
1146 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2020-02-18
  • 打赏
  • 举报
回复
引用 39 楼 张天星 的回复:
[quote=引用 7 楼 正怒月神 的回复:] [quote=引用 6 楼 阿拉菜鸟 的回复:] [quote=引用 4 楼 正怒月神的回复:]
public class Rootobject
        {
            public Row[] row { get; set; }
        }

        public class Row
        {
            public string[] cname { get; set; }
            public object[] ctype { get; set; }
        }
我现在用的object,但不是object[],我再研究一下!谢谢你![/quote] 你把这个json,复制一下, 然后到 vs中,打开一个class, 然后在选项卡,选择编辑--选择性黏贴--将json黏贴为class 就明白了。 以后也不会有这些问题了。[/quote] 我靠。还有这个功能,我每次都是一个个参数抄过去。。[/quote] 恩,vs这个功能很强大,很好用。
W2KEXP 2020-02-16
  • 打赏
  • 举报
回复
引用 38 楼 月下秋风起的回复:
大括号表示对象啊,,,就定Object
谢谢大侠,基本上整明白了!
W2KEXP 2020-02-16
  • 打赏
  • 举报
回复
引用 39 楼 张天星的回复:
[quote=引用 7 楼 正怒月神 的回复:] [quote=引用 6 楼 阿拉菜鸟 的回复:] [quote=引用 4 楼 正怒月神的回复:]
public class Rootobject
        {
            public Row[] row { get; set; }
        }

        public class Row
        {
            public string[] cname { get; set; }
            public object[] ctype { get; set; }
        }
我现在用的object,但不是object[],我再研究一下!谢谢你![/quote] 你把这个json,复制一下, 然后到 vs中,打开一个class, 然后在选项卡,选择编辑--选择性黏贴--将json黏贴为class 就明白了。 以后也不会有这些问题了。[/quote] 我靠。还有这个功能,我每次都是一个个参数抄过去。。[/quote] 我也是刚知道。。。而且我用的2010好像没这个功能
张天星 2020-02-15
  • 打赏
  • 举报
回复
引用 7 楼 正怒月神 的回复:
[quote=引用 6 楼 阿拉菜鸟 的回复:] [quote=引用 4 楼 正怒月神的回复:]
public class Rootobject
        {
            public Row[] row { get; set; }
        }

        public class Row
        {
            public string[] cname { get; set; }
            public object[] ctype { get; set; }
        }
我现在用的object,但不是object[],我再研究一下!谢谢你![/quote] 你把这个json,复制一下, 然后到 vs中,打开一个class, 然后在选项卡,选择编辑--选择性黏贴--将json黏贴为class 就明白了。 以后也不会有这些问题了。[/quote] 我靠。还有这个功能,我每次都是一个个参数抄过去。。
月下秋风起 2020-02-15
  • 打赏
  • 举报
回复
大括号表示对象啊,,,就定Object
baidu_40276693 2020-02-13
  • 打赏
  • 举报
回复
这就不清楚了,我记得2012开始的都有。 我没用过vs2010,之前的版本只用过vs2005和vs2008
W2KEXP 2020-02-12
  • 打赏
  • 举报
回复
引用 19 楼 jimmy212 的回复:
    
    class RowClass
    {
        public List<InfoClass> row { get; set; }
    }

    class InfoClass
    {
        public List<string> cname { get; set; }

        public List<string> ctype { get; set; }
    }
这样也是可以的,但是需要在json文件中,将ctype:[],中将{}去掉 使用Newtonsoft.Json.JsonConvert.DeserializeObject<RowClass>()会自动将cytpe转换为一个空的list
谢谢!目前我就是这样处理的!效果也可以!但是细节上的处理方法就搞不明白了。
W2KEXP 2020-02-12
  • 打赏
  • 举报
回复
想把那一行标红来着,失败。。。重新粘贴JSON文本如下:
{
"Student":[
{
   "name":"孙大圣",
   "age":"23",
   "edu":"大学"
   },
   {
   "name":"二师兄",
   "age":{"25"},
   "edu":"高中"
   },
   {
   "name":"沙师弟",
   "age":"38",
   "edu":"大专"
   }
   ]
}
W2KEXP 2020-02-12
  • 打赏
  • 举报
回复
最近有点小忙,刚刚研究了半天,还是没能解决问题,这样梳理一下: 假如,我要把下面的JSON内容解析为实体类,其中age的值有两种,一种是文本的,一种是对象的:
{
"Student":[
{
   "name":"孙大圣",
   "age":"23",
   "edu":"大学"
   },
   {
   "name":"二师兄",
   "age":{"25"},
   "edu":"高中"
   },
   {
   "name":"沙师弟",
   "age":"38",
   "edu":"大专"
   }
   ]
}
最小的实体类怎样定义?
public string age
还是
public object age
Vegdie 2020-02-12
  • 打赏
  • 举报
回复
写public class Row
{
public string[] cname;
public string[] ctype;
}

public class My
{
public Row[] row;
}
刘行之 2020-02-12
  • 打赏
  • 举报
回复
public class Row
{
public Object[] cname;
public Object[] ctype;
}

public class My
{
public Row[] row;
}
cshxiang 2020-02-11
  • 打赏
  • 举报
回复
ctype 的类型得能接受 null 值。
cshxiang 2020-02-11
  • 打赏
  • 举报
回复
引用 4 楼 正怒月神 的回复:
public class Rootobject
{
public Row[] row { get; set; }
}

public class Row
{
public string[] cname { get; set; }
public object[] ctype { get; set; }
}


或者:
public class MyOb
{
public Row[] row { set; get; }
}
public class Row
{
public string[] cname { set; get; }
public object ctype { set; get; }
}
都可以;看你转换成对象后,怎么处理比较方便;

var myob = Newtonsoft.Json.JsonConvert.DeserializeObject<MyOb>(json);
weixin_46312703 2020-02-11
  • 打赏
  • 举报
回复
public class Row
{
public string[] cname;
public string[] ctype;
}

public class My
{
public Row[] row;
}
xiaoxiangqing 2020-02-11
  • 打赏
  • 举报
回复
返回数据感觉不是很好解析
最肯忘却 2020-02-11
  • 打赏
  • 举报
回复
引用 2 楼 阿拉菜鸟 的回复:
[quote=引用 1 楼 github_36000833 的回复:] public class Row { public string[] cname; public string[] ctype; } public class My { public Row[] row; }
ctype为空,在转实体类的时候怎么处理?[/quote] 顶
最肯忘却 2020-02-11
  • 打赏
  • 举报
回复
引用 20 楼 qq_46224001 的回复:
同问,帮顶,支持楼主
引用
一样
W2KEXP 2020-02-11
  • 打赏
  • 举报
回复
引用 14 楼 cshxiang的回复:
ctype 的类型得能接受 null 值。
好像有些思路了,今天我再改一下看看!
W2KEXP 2020-02-11
  • 打赏
  • 举报
回复
引用 13 楼 cshxiang的回复:
[quote=引用 4 楼 正怒月神 的回复:]
public class Rootobject
{
public Row[] row { get; set; }
}

public class Row
{
public string[] cname { get; set; }
public object[] ctype { get; set; }
}


或者:
public class MyOb
{
public Row[] row { set; get; }
}
public class Row
{
public string[] cname { set; get; }
public object ctype { set; get; }
}
都可以;看你转换成对象后,怎么处理比较方便;

var myob = Newtonsoft.Json.JsonConvert.DeserializeObject<MyOb>(json);[/quote] 好的,谢谢!今天我再学习一下!
qq_46224001 2020-02-11
  • 打赏
  • 举报
回复
同问,帮顶,支持楼主
引用
加载更多回复(13)

111,130

社区成员

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

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

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