字符串转对象时JSON需要先了解该字符串包含的数据格式,是对象还是数组。
对象是以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间运用 “,”(逗号)分隔。名称用引号括起来;值如果是字符串则必须用括号,数值型则不须要。例如:{"ID":"112","Name":"石子儿"}。
数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间运用 “,”(逗号)分隔。例如:[{"ID":"112","Name":"石子儿"},{"ID":"113","Name":"陈晨"}]
数组转换可用 var ja=JArray.Parse(str);
对象转换可用 var jo=JObject.Parse(str);
JSON字符串转对象的两种方法,含未知JSON元素
格式: {"ProcessName":21,"Folio":11,"CurrentUser":31,"Parameters":{"FormID":"3","CheckMessage":"1111"}}
Parameters不固定。
一、 将Parameters转为JObject再 使用dynamic 循环获取
{
JObject objJ = JObject.Parse(JSONStr);//创建JObject对象
string ProcessName = objJ["ProcessName"].ToString();
string Folio = objJ["Folio"].ToString();
string CurrentUser = objJ["CurrentUser"].ToString();
string JSONParameters = objJ["Parameters"].ToString();
JObject objParameters = JObject.Parse(JSONParameters);
Dictionary<string, string> dict = new Dictionary<string, string>();
dynamic parsedObject = objParameters;
foreach (var item in objParameters)
{
dict.Add(item.Key.ToString(), item.Value.ToString());
}
}
二、 使用Model(推荐)
public class JSONBean
{
public JSONBean()
{ }
public Dictionary<string, string> Parameters;
/// <summary>
///
/// </summary>
public int ProcessName { get; set; }
/// <summary>
///
/// </summary>
public int Folio { get; set; }
/// <summary>
///
/// </summary>
public int CurrentUser { get; set; }
/// <summary>
///
/// </summary>
}
{
JSONBean jb = JsonConvert.DeserializeObject<JSONBean>(JSONStr);
s += jb.CurrentUser;
s += jb.Folio;
s += jb.ProcessName;
foreach (var item in jb.Parameters)
{
s += "\r\n" + item.Key + ":" + item.Value + "\r\n";
}
}
this.txtMSG.Text = s;