1.先引入json的dll
2.观察c#中json字符串的格式
3.所以我们只需要讲从数据库里面的数据写成这种格式就能够转对象了
代码如下:(你可以直接复制粘贴就行)
3.5(备注,非常重要)
你定义的类必须标明是可序列化的
public static string getJsonStr(SqlDataReader dr)
{
StringBuilder builder = new StringBuilder();
bool flag = false;
try
{
while (dr.Read())
{
flag = true;
builder.Append("{");
for (int i = 0; i < dr.FieldCount; i++)
{
Log.log(dr.GetValue(i).GetType() + "");
switch (dr.GetValue(i).GetType().ToString())
{
case "System.String":
Log.log("字符串");
builder.Append("\"");
builder.Append(dr.GetName(i));
builder.Append("\":\"");
builder.Append(dr.GetValue(i).ToString().Replace(@"\", @"\\").Replace("\"", "\\\""));
builder.Append("\",");
break;
case "System.Int32":
builder.Append("\"");
builder.Append(dr.GetName(i));
builder.Append("\":");
builder.Append(dr.GetValue(i).ToString().Replace("\"", ""));
builder.Append(',');
Log.log("int类型");
break;
default:
break;
}
}
}
dr.Close();
if (flag)
{
builder.Remove(builder.Length - 1, 1);
}
}
catch
{
dr.Close();
}
builder.Append("}");
return builder.ToString();
}
有了该字符串之后,直接转换成为对象(反序列化)
public UserInfo json2Object(string jsonStr)
{
UserInfo userInfo = JsonConvert.DeserializeObject<UserInfo>(jsonStr);
return userInfo;
}
4.使用泛型
public T json2Object<T>(string jsonStr)
{
T infoObject = JsonConvert.DeserializeObject<T>(jsonStr);
return infoObject;
}