这种属性名称是动态增加的怎么定义MODEL啊?

问题描述

想用JSON.NET将JSON字符串直接转换为定义的对象,但是下面的JSON格式有一个属性是动态的:{'week':'周一','school':'第一中学','classList':{'001':{'name':'初一一班','num':'30人'},'002':{'name':'初一二班','num':'22人'},'003':{'name':'初一三班','num':'32人'}}}就是001,002,003这样一直下去,具体多少个是根据数据返回而定的这种情况是否可以定义一个MODEL并进行转换?如果不行,那怎么去读取这种结构数据呢?

解决方案

解决方案二:
varm1=newGoods{Id="001",Name="小王"};varm2=newGoods{Id="002",Name="小李"};varm3=newGoods{Id="003",Name="小张"};varlist=newList<Goods>();list.Add(m1);list.Add(m2);list.Add(m3);stringjson=JsonConvert.SerializeObject(list);Console.WriteLine(json);//打印结果为:[{"Id":"001","Name":"小王"},{"Id":"002","Name":"小李"},{"Id":"003","Name":"小张"}]

是这个意思吧?
解决方案三:
不是的啊!字符串格式我已经定义好了{'week':'周一','school':'第一中学','classList':{'001':{'name':'初一一班','num':'30人'},'002':{'name':'初一二班','num':'22人'},'003':{'name':'初一三班','num':'32人'}}}通过这个字符串去定义类型,怎么定义。。。你那个是自己定义,把问题简单化了,但是现在的问题是格式已经固定不能更改了。
解决方案四:
你的json可以看成是这个对象转换后的结果:classA{stringWeek;stringSchool;List<B>classList;}classB{stringname;intcount;}不管有多少个B实例,它们哦度是calsslist的一个元素而已。
解决方案五:
http://stackoverflow.com/questions/3142495/deserialize-json-into-c-sharp-dynamic-object
解决方案六:
不能模型实体化。你只能使用json解析工具,例如Json.Net,使用它的JsonToken结构去读取。
解决方案七:
原则上,你可以反序列化为ExpandoObject类型的对象,然后使用它的IDictionary<string,object>接口去遍历。不过,使用更能更强、效率更高的json解析库,也是很好的选择。
解决方案八:
引用6楼sp1234的回复:

原则上,你可以反序列化为ExpandoObject类型的对象,然后使用它的IDictionary<string,object>接口去遍历。不过,使用更能更强、效率更高的json解析库,也是很好的选择。

能否给点代码示例该如何读取里面的信息呢?

时间: 2024-09-19 09:36:09

这种属性名称是动态增加的怎么定义MODEL啊?的相关文章

按控件实例名称及其属性名称实现动态赋值

动态|控件 '按控件实例名称及其属性名称实现动态赋值 '入口参数:ClassInstance 控件所在的类实例 ' ControlName 控件实例名称,区分大小写 ' PropertyName 要设值的控件属性名称,区分大小写(其实这里可以不必区分大小写的,只是为了养成习惯,我这样要求自己的) ' Value 新值,类型是一个Object,这倒是要注意的 '出口参数: True则重设成功,False不成功 '需要 Imports System.Reflection和Imports System

在Winform界面菜单中实现动态增加【最近使用的文件】菜单项

在我们一些和文件处理打交道的系统中,我们往往需要记录下最近使用的文件,这样方便用户快速打开之前浏览或者编辑过的文件,这种在很多软件上很常见,本文主要介绍在Winform界面菜单中实现[最近使用的文件]动态菜单的处理,实现一个较为常用的功能. 在我上篇随笔<文字处理控件TX Text Control的使用>介绍的内容中,我针对性的对这个控件的使用做了一个全面的了解,发现其中案例代码总这部分的功能实现[最近使用的文件]挺好,于是把它进行了整理,把整个思路作为一篇随笔进行记录,希望对大家有所帮助.

js动态增加删除行

js动态增加删除行代码,很实用. 所做过的多个项目中均用到js动态添加删除行的应用,在写过多种方案后,最终整理出这个最为方便应用的方案,以备日后拿来便用: 以下是DEMO全部代码: <html>  <head>   <title>Ace Test</title> <script language="JavaScript">      var cGetRow=-99999;   function insertrow(){   v

asp.net 2.0中TREEVIEW中动态增加结点

asp.net|treeview|动态 在asp.net 2.0中,要动态从数据库中取出内容,动态增加结点,其实不难,比如以SQL SERVER 2000的PUBS数据库为例子,要以树型列表方式,取出作者,做为根结点,然后取出每位作者写过什么书,作为子结点,可以这样 <%@ Page Language="C#"%><%@ Import Namespace="System.Data"%><%@ Import Namespace="

jquery动态增加text元素以及删除文本内容实例代码

这段代码是通过jquery动态增加限定数额的text(本例为5个) ,以及清除文本内容,用到了after()方法追加元素. <!--以下为script代码开始--> 复制代码 代码如下: <script> $(document).ready(function(){ var spotMax = 5;//限定添加text元素的总个数 var afterId = 0;//要追加元素的id var newId=1;//新生成text的id if($('table#vote').size()

javascript-怎么动态增加元素顺序?

问题描述 怎么动态增加元素顺序? <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>JQuery Test</title> <script src="../behappy/jquery-2.1.4.min.js" charset="utf-8&q

c# winform 怎么动态生成4行3列的lable 当lable大于12个进行翻页显示,并且lable动态增加与减少

问题描述 c#winform怎么动态生成4行3列的lable当lable大于12个进行翻页显示,并且lable动态增加与减少(举例:当数量为9时lable数量是9当数量为10是lable数量为10如何数量减少lable数量也随之减少静态更新) 解决方案 解决方案二: flowLayoutPanel试试这个控件解决方案三: 怎么实现静态刷新啊,每次刷新都是一闪一闪的解决方案四: 还不如直接说你的需求解决方案五: 真心没看懂你的需求解决方案六: 以下代码在vs2013下调试通过.新建一个Window

asp.net2.0中如何动态增加删除表格,在增加表格的同时能增加下拉列表控件?在线等

问题描述 asp.net2.0中如何动态增加删除表格,在增加表格的同时,表格中增加下拉列表控件>该如何实施?谢谢! 解决方案 解决方案二:昨晚天刚用JS写一个,给个参考吧-----------<scripttype="text/javascript">//印刷机组信息varmachineStr='<%=machineStr%>';//可开计划的产品编号和名称信息varproductionStr='<%=productionStr%>';//将印

多个文件上传(php+js可动态增加文件上传框)

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.111cn.net1999/xhtml"> <head> <meta content="text/html