使用的库文件为Newtonsoft.Json
读取JSON文件
/// <summary>
/// 读取JSON文件
/// </summary>
/// <param name="key">JSON文件中的key值</param>
/// <returns>JSON文件中的value值</returns>
public JObject Readjson(string jsonfile)
{
using (System.IO.StreamReader file = System.IO.File.OpenText(jsonfile))
{
using (JsonTextReader reader = new JsonTextReader(file))
{
JObject jObject = (JObject)JToken.ReadFrom(reader);
return jObject;
}
}
}
写JSON文件
public void Writejson(string jsonfile, JObject jObject)
{
using (System.IO.StreamWriter file = new System.IO.StreamWriter(jsonfile))
{
file.Write(jObject.ToString());
}
}
读JSON数组等,包括可能没有字段怎么处理
public ParameterItem ReadParameter()
{
try
{
JObject jObject = Readjson("a.json");
JArray items = JArray.Parse(jObject["items"].ToString());
foreach (var item in items)
{
JObject itmeTemp = JObject.Parse(item.ToString());
if (uint.Parse(itmeTemp["channel"].ToString()) == channel)
{
ParameterItem parameterItem = new ParameterItem();
parameterItem.Channel = uint.Parse(itmeTemp["channel"].ToString());
parameterItem.Type = int.Parse(itmeTemp["type"].ToString());
parameterItem.Name = itmeTemp["name"].ToString();
if (itmeTemp.Property("maintenance") != null)
{
parameterItem.Maintenance = bool.Parse(itmeTemp["maintenance"].ToString()); ;
}
else
{
parameterItem.Maintenance = true;
}
return ParameterItem;
}
}
}
catch (Exception ex)
{
Console.WriteLine("读取配置参数出现异常!"+ ex);
return null;
}
return null;
}
修改后写入
JObject jObject = Readjson("a.json");
JToken items = jObject["items"];
foreach (var item in items)
{
for (int i = 0; i < newItem.Count; i++)
{
if (uint.Parse(item["channel"].ToString()) == newItem[i].Channel)
{
item["type"] = newItem[i].Type;
item["oneToTwenty"] = newItem[i].OneToTwenty;
break;
}
}
}
Writejson("a.json", jObject);
JSON文件结构
{
"count":2,
"items": [
{
"channel": 0,
"type":0,
"name":"测试0通道",
},
{
"channel": 1,
"type":1,
"name":"测试1通道",
}]
}
举一反三可以实现很多功能