C# 如何写回用于读取的相同Json文件
我有一个用于读取的JSON文件,从中,我得到一些JSON值,以便创建一个ajax请求,从中,ajax请求我得到ajax内容作为字符串,并将其写入新的文本文件中,然后我将文件名添加到对象中,该对象表示读取JSON的子对象。我可以将值添加到Jason中,但问题是,当我试图覆盖那些它不支持的特定子项时,我只能在页面的末尾写入它们,但我需要在特定子项中写入它们 这是我的特雷森 这是我的密码C# 如何写回用于读取的相同Json文件,c#,json,ajax,C#,Json,Ajax,我有一个用于读取的JSON文件,从中,我得到一些JSON值,以便创建一个ajax请求,从中,ajax请求我得到ajax内容作为字符串,并将其写入新的文本文件中,然后我将文件名添加到对象中,该对象表示读取JSON的子对象。我可以将值添加到Jason中,但问题是,当我试图覆盖那些它不支持的特定子项时,我只能在页面的末尾写入它们,但我需要在特定子项中写入它们 这是我的特雷森 这是我的密码 private Task LoadJson(BaseDocument baseDocument)
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;
}
}
private Task LoadJson(BaseDocument-BaseDocument)
{
字符串路径=string.Empty;
path=baseDocument.path.ToString();
字符串fulltreepath=path+“\\tree.json”;
使用(StreamReader r=新StreamReader(fulltreepath))
{
字符串json=r.ReadToEnd();
var parsed=JObject.Parse(json);
动态数组=JsonConvert.DeserializeObject(json);
数据=(JArray)已解析[“子项”][1][“子项”];
}
foreach(数据中的JObject子项)
{
var value=children.GetValue(“html”).ToString();
列表元素=新列表();
var matches=reg.matches(值);
foreach(匹配中的匹配)
{
var theData=match.Groups[1]。值;
元素。添加(数据);
}
var ParameterObject=新列表();
对于(int i=1;i<3;i++)
{
ParameterObject.Add(Int32.Parse(elements[i]);
}
ParameterObject.Add(元素[0]);
var client=新的RestClient(“https://www.nfa.futures.org/api/DataHandlerEnforcementReg.ashx");
var请求=新的重新请求(Method.POST);
AddHeader(“缓存控制”、“无缓存”);
AddHeader(“连接”、“保持活动”);
请求.AddHeader(“内容长度”、“111”);
AddHeader(“接受编码”、“gzip、deflate”);
request.AddHeader(“主机”,“www.nfa.futures.org”);
请求添加标题(“邮递员令牌”,“c4e54cce-4d2a-4d48-a003-3e8afb205bae,9761dd14-13b5-4da1-929c-8049099b4ba7”);
AddHeader(“缓存控制”、“无缓存”);
request.AddHeader(“接受”,“*/*”);
AddHeader(“用户代理”、“PostmanRuntime/7.15.2”);
AddHeader(“内容类型”、“文本/普通”);
AddParameter(“未定义”,“id\”:1,“方法\:“getRuleOrRules\”,“params\”:{“sectionSeqId\”:“+ParameterObject[0]+”,“subSectionSeqId\”:“+ParameterObject[1]+”,“ruleId\”:“+ParameterObject[2]+“\”}”,ParameterType.RequestBody);
IRestResponse response=client.Execute(请求);
var res=响应。内容;
var FinalResponse=JObject.Parse(res);
var Uri=children.GetValue(“Uri”).ToString();
var FileName=MD5Hash(Uri)+“_transform2”;
添加(新的JProperty(“transformedUri”,文件名));
var l=儿童;
使用(FileStream fs=File.Open(fulltreepath,FileMode.Append))
使用(StreamWriter sw=新StreamWriter(fs))
使用(JsonWriter jw=新的JsonTextWriter(sw))
{
jw.Formatting=格式化.缩进;
JsonSerializer serializer=新的JsonSerializer();
serializer.Serialize(jw,子级);
}
var Pathfile=path+“\\”+文件名;
如果(最终响应[“结果”][“结果”][0][“规则描述”]!=null)
{
var jsonData=JsonConvert.SerializeObject(最终响应[“结果”][“结果”][0][“规则描述”]);
WriteAllText(路径文件,jsonData.Replace(“”,“).Trim());
}
}
返回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>"
}]
}
}
{
“uri”:https://www.nfa.futures.org/news/
EnforceRegActionsSimple.aspx“,
“儿童”:[
{
“uri”:
"https://www.nfa.futures.org/news/
EnforceRegActionsSimple.aspx#145View%209%2Be12
33a13%401“,
“儿童”:[
{
“uri”:https://www.nfa.futures.org/news/
EnforceRegActionsSimple.aspx#1
14规则4%2Be6ea03f2%400%40145视图%209%2Be1233a13%401“,
“cachedUri”:空,
“标题”:“合规规则:规则2-2:规则”,
“类型”:“强制执行和注册行动:规则”,
“html”:“规则”
},
{
“uri”:https://www.nfa.futures.org/news
/EnforceRegActionsSimple.aspx#
114Rule4%2Be6ea03f2%401%40145视图%209%2Be1233a13%401“,
“cachedUri”:空,
“标题”:“合规规则:规则2-4:规则”,
“类型”:“强制执行和注册行动:规则”,
“html”:“规则”
}]
}
}
您已经找到了创建数据库的原因。通过大量仔细的编程,您可以对同一个文件进行读写。但是,如果您想用150字节长的更新数据块替换原始文件中的100字节数据块,您该怎么办呢?看看MongoDB或其他JSON友好型数据库您的JSON格式不太好ed.如果我将其上载到,我会收到多个错误,因为1)字符串值中有换行符,这是不允许的;2)最外面的“子项”:[
数组缺少结束符]
brace。您能不能请您的问题包含格式良好的JSON,我们可以测试并使用一个演示您问题的工具?关于格式良好的JSON可能是什么样子的,我的最佳猜测是:但正如上面提到的@Flydog57,JSON文件不是数据库,而是文本文件。您需要将该文件反序列化为n内存数据模型(可能只是JToken