using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; namespace PackingPress.Common { public class SettingJsonGet { private JToken _jsonData; private string _fileName; public SettingJsonGet(string jsonFile) { try { string settingText = FileHelper.ReaderFile(jsonFile); _fileName = jsonFile; _jsonData = JToken.Parse(settingText); } catch { _jsonData = JToken.Parse("{}"); } } /// /// 获取json对象 /// /// /// public JToken GetJsonRoot() { return _jsonData; } public void SaveJson() { FileHelper.WriteFile(_fileName,_jsonData.ToString(),"UTF-8"); } } public static class NewtonsoftExtends { /// /// 根据JsonPath获取json值 /// /// /// /// /// public static T GetJPropertyValueByPath(this JToken jToken, string jsonPath) { var childJToken = jToken.SelectToken(jsonPath); if (childJToken != null) { return childJToken.Value(); } return default(T); } /// /// 设置Json对象值 /// /// /// /// /// public static void SetPropertyValue(this JToken jToken,string name, T value) { jToken.Replace(new JProperty(name, value)); } /// /// 设置Json对象值根据JsonPath /// /// /// /// /// public static void SetPropertyValue(this JToken jToken, string name, T value,string jsonPath) { var parentJToken = jToken.SelectToken(jsonPath); if (parentJToken != null) { var childJToken = parentJToken.FirstOrDefault(child => ((JProperty)child).Name == name); if (childJToken != null) { childJToken.Replace(new JProperty(name, value)); } } } /// /// 获取所有子节点 /// /// /// /// public static IEnumerable GetAllChildren(this JToken jToken, string jsonPath) { var parentJToken = jToken.SelectToken(jsonPath); if (parentJToken == null) { return null; } return parentJToken.Children(); } /// /// 添加子节点 /// /// /// /// /// public static void AddChild(this JObject jObject, string name, T value) { if (jObject.ContainsKey(name)) { var findChild = jObject.Children().Where(child => ((JProperty)child).Name == name).FirstOrDefault(); findChild.Replace(new JProperty(name, value)); } else { jObject.Add(name, JToken.FromObject(value)); } } } }