110,534
社区成员
发帖
与我相关
我的任务
分享
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; }
}
\r\n\"Name\":\"CSDN论坛\",\r\n\"Name\":\"CSDN论坛\",\r\n\"Name\":\"CSDN论坛\",\r\n\"Name\":\"CSDN论坛\",\r\n\"Name\":\"CSDN论坛\",\r\n\"Name\":\"CSDN论坛\",