在对下图的JSON格式进行序列化和解析的时候遇到了一些困难,其中分组的名称是可变的,并且不仅仅局限于三个分组..
解析
以下代码仅提供思路,不做具体实现,有需要的看了自然懂..// 定义一个实体类
public class TestFC
{
public string name { get; set; }
public string[] source { get; set; }
}
//处理函数中的代码
var varTemp = JsonConvert.DeserializeObject>>(sr);//sr为网络或这本地读取的字符串如上图
foreach (var mt in varTemp)
{
//循环取值
}
序列化
数据源为以下格式的文本文档
以下同样只提供代码片段,同时使用了上面定义的实体类/**** 初始化定义 ****/
List listStrArr = new List(); //定义泛型,用于存放动态的数组
TestFC tfc = new TestFC(); //实例化类
tfc.name = "";
tfc.source = listStrArr.ToArray();
List tvFC2 = new List();
Dictionary> tvFC = new Dictionary>();
/**** 在循环取值中实例化,并进行赋值 ****/
foreach (string strtv in astrTV) //其中astrTV为数据源文本文档所有行组成的数组..
{
//添加分组 - 此处省略一百万条代码
tvFC2 = new List(); //
tvFC.Add(strfz, tvFC2); //strfz为分组名称
//添加直播源 - 此处省略一百万条代码
tfc = new TestFC();
tfc.name = tvTitle;//添加频道名称
listStrArr = new List();
listStrArr.Add(tvURL2); //添加播放地址,因为涉及到同一个频道多个地址的情况,这边要特别的处理下,
tfc.source = listStrArr.ToArray(); //把相同频道的直播源地址的集合转换为数组
tvFC2.Add(tfc); //完成一条直播源数据的添加
}
/**** 使用第三方工具进行序列化 ****/
string strJson = JsonConvert.SerializeObject(tvFC);
//END
Dictionary是一个泛型,他本身有集合的功能有时候可以把它看成数组
他的结构是这样的:Dictionary
他的特点是存入对象是需要与[key]值一一对应的存入该泛型,通过某一个一定的[key]去找到对应的值。