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));
}
}
}
}