请救一个问题,解析字符串后的行列排序问题

plcly1 2016-04-26 10:37:59
先贴代码
public class JsonStringToObj
{
#region Json转成对象
/// <summary>
/// Json转对象
/// </summary>
/// <typeparam name="T">对象</typeparam>
/// <param name="json">字符串Json</param>
/// <returns>List<T></returns>
public static List<T> JsonStrToObj<T>(string json) where T : class,new()
{
List<T> list = new List<T>();
Type type = typeof(T);
PropertyInfo[] pArray = type.GetProperties();

int listLength = 0;
List<MedianValue> mList = new List<MedianValue>();
foreach (PropertyInfo p in pArray)
{
MedianValue m = new MedianValue();
List<string> pList = ReplaceValue(p.Name, json);
if (listLength < pList.Count)
listLength = pList.Count;
m.Name = p.Name;
m.NameValue = pList;
mList.Add(m);
}
for (int i = 0; i < listLength; i++)
{
T entity = new T();
for (int j = 0; j < mList.Count; j++)
{
foreach (PropertyInfo p in pArray)
{
if (p.Name == mList[j].Name)
p.SetValue(entity, mList[j].NameValue[i], null);
}
}
list.Add(entity);
}
return list;
}
public static List<string> ReplaceValue(string name, string jsonstr)
{
List<string> strList = new List<string>();
Regex reg = new Regex(@"(?<=" + name + ").*?(?=,)");
Regex reg2 = new Regex("[^\\\\\\s\":]+");
MatchCollection mc = reg.Matches(jsonstr);
foreach (var item in mc)
{
string s = item.ToString();
s = reg2.Match(s).ToString();


strList.Add(s);
}
return strList;
}
#endregion
}

/// <summary>
/// Json转对象辅助类
/// </summary>
public class MedianValue
{
public string Name { get; set; }
public List<string> NameValue { get; set; }

}


起因是解析一段Json一直失败,没办法就手动获取了,好在只有一级比较简单(这里正则为什么要分两个,我合一起不起作用,还请大神顺手解答一下)

那么问题来了,这样我获取的数据是列,但我要一行一行插入,目前我使用了两个循环,这样效率比较低,有没有更好一点的算法。



本人比较菜,代码有不怎么好的地方请指教,没做数据校验,List长度获取方式也比较奇葩。
...全文
110 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
圣殿骑士18 2016-04-27
  • 打赏
  • 举报
回复
先反序列化成对象,再用动态类型dynamic 就好了呀,哪里用得着这样麻烦的转化
plcly1 2016-04-26
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
原始的 json 串是什么样的?
原始的json串有很多不需要的东西,而且请求有些成功有些不成功,有些又有嵌套,返回的Json串不是从对象中序列化的,这条路我已经死心了
xuzuning 2016-04-26
  • 打赏
  • 举报
回复
原始的 json 串是什么样的?
xuzuning 2016-04-26
  • 打赏
  • 举报
回复
如果不知道原始的 json 串,那么怎么能判断你的程序的问题所在呢? 程序只要语法正确,能正常进入和结束,就不能说程序本身有什么问题 但问题在于,程序是否能准确的表达你的意思,这才是关键! 说英语、说德语、说法语还是说日语,这都不是问题的所在,关键在于是否说明白了
plcly1 2016-04-26
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
原始的 json 串是什么样的?

如果是正则的话是这样的
\r\n\"Name\":\"CSDN论坛\",\r\n\"Name\":\"CSDN论坛\",\r\n\"Name\":\"CSDN论坛\",\r\n\"Name\":\"CSDN论坛\",\r\n\"Name\":\"CSDN论坛\",\r\n\"Name\":\"CSDN论坛\",


110,534

社区成员

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

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

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