首页 > 解决方案 > 如何写回相同的 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>"
     }]
    }
     }

标签: c#jsonajax

解决方案


推荐阅读