c# - 如何写回相同的 Json 文件用于读取
问题描述
我有一个用于读取的 JSON 文件,我从中获取一些 JSON 值以创建一个 ajax 请求,并从该 ajax 请求中获取该 ajax 内容作为字符串并将其写入新的文本文件然后我将文件名添加到对象代表读取 JSON 的子对象的对象中。我可以将值添加到 Jason,但问题是当我尝试覆盖它不支持的那些特定子项时,我只能将它们写在页面末尾,但我需要将它们写在特定子项中。
这是我的treejson
这是我的代码
private Task LoadJson(BaseDocument baseDocument)
{
string path = string.Empty;
path = baseDocument.Path.ToString();
string fulltreepath = path + "\\tree.json";
using (StreamReader r = new StreamReader(fulltreepath))
{
string json = r.ReadToEnd();
var parsed = JObject.Parse(json);
dynamic array = JsonConvert.DeserializeObject(json);
data = (JArray)parsed["children"][1]["children"];
}
foreach (JObject children in data)
{
var value = children.GetValue("html").ToString();
List<string> elements = new List<string>();
var matches = reg.Matches(value);
foreach (Match match in matches)
{
var theData = match.Groups[1].Value;
elements.Add(theData);
}
var ParameterObject = new List<object>();
for (int i = 1; i < 3; i++)
{
ParameterObject.Add(Int32.Parse(elements[i]));
}
ParameterObject.Add(elements[0]);
var client = new RestClient("https://www.nfa.futures.org/api/DataHandlerEnforcementReg.ashx");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Connection", "keep-alive");
request.AddHeader("Content-Length", "111");
request.AddHeader("Accept-Encoding", "gzip, deflate");
request.AddHeader("Host", "www.nfa.futures.org");
request.AddHeader("Postman-Token", "c4e54cce-4d2a-4d48-a003-3e8afb205bae,9761dd14-13b5-4da1-929c-8049099b4ba7");
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Accept", "*/*");
request.AddHeader("User-Agent", "PostmanRuntime/7.15.2");
request.AddHeader("Content-Type", "text/plain");
request.AddParameter("undefined", "{\"id\":1,\"method\":\"getRuleOrRules\",\"params\":{ \"sectionSeqId\" :" + ParameterObject[0] + ", \"subSectionSeqId\" :" + ParameterObject[1] + ", \"ruleId\" : \"" + ParameterObject[2] + "\"}}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
var res = response.Content;
var FinalResponse = JObject.Parse(res);
var Uri = children.GetValue("uri").ToString();
var FileName = MD5Hash(Uri) + "_transform2";
children.Add(new JProperty("transformedUri", FileName));
var l = children;
using (FileStream fs = File.Open(fulltreepath, FileMode.Append))
using (StreamWriter sw = new StreamWriter(fs))
using (JsonWriter jw = new JsonTextWriter(sw))
{
jw.Formatting = Formatting.Indented;
JsonSerializer serializer = new JsonSerializer();
serializer.Serialize(jw, children);
}
var Pathfile = path + "\\" + FileName;
if (FinalResponse["result"]["result"][0]["RULE_DESCRIPTION"] != null)
{
var jsonData = JsonConvert.SerializeObject(FinalResponse["result"]["result"][0]["RULE_DESCRIPTION"]);
File.WriteAllText(Pathfile, jsonData.Replace('"', ' ').Trim());
}
}
return Task.CompletedTask;
}
}
这是我用来读写的 JSON 文件。
{
"uri": "https://www.nfa.futures.org/news/
EnforceRegActionsSimple.aspx",
"children": [
{
"uri":
"https://www.nfa.futures.org/news/
EnforceRegActionsSimple.aspx#145View%209%2Be12
33a13%401",
"children": [
{
"uri": "https://www.nfa.futures.org/news/
EnforceRegActionsSimple.aspx#1
14Rule4%2Be6ea03f2%400%40145View%209%2Be1233a13%401",
"cachedUri": null,
"title": "Compliance Rules : Rule 2-2 : Rule",
"type": "Enforcement and Registration Actions : Rule",
"html": "<span data-rule-id=\"RULE 2-2\" data-rule-section=\"4\" data-rule-sub-section=\"0\" class=\"btn-add-rule\" data-cube-level=\"2\" data-cube-scope=\"25178371\">Rule</span>"
},
{
"uri": "https://www.nfa.futures.org/news
/EnforceRegActionsSimple.aspx#
114Rule4%2Be6ea03f2%401%40145View%209%2Be1233a13%401",
"cachedUri": null,
"title": "Compliance Rules : Rule 2-4 : Rule",
"type": "Enforcement and Registration Actions : Rule",
"html": "<span data-rule-id=\"RULE 2-4\" data-rule-section=\"4\" data-
rule-sub-section=\"0\" class=\"btn-add-rule\" data-cube-level=\"2\"
data-cube-scope=\"59284911\">Rule</span>"
}]
}
}
解决方案
推荐阅读
- html - 带有倾斜底角的纯 CSS 功能区
- etl - 事实表中的默认数据
- asp.net - 在gridview的行点击后显示图像
- flutter - macos中的flutter应用默认路径是什么?
- amazon-web-services - 如何将 Amazon S3 连接到本地托管的 IBM 数据阶段服务器
- django - 我尝试在 CreateView 中创建权限
- c# - 是否使用类似于 if(dead ==false) 的 if(!dead)?
- c++ - 包含
导致以下编译错误:'fabsl': is not a member of '`global namespace' - r - 将所有缺失值放在数据框的右侧
- javascript - 函数中的默认参数指向 c++ unordered_map 中的引用