我有以下Json
{
"error": {
"errors": [
{
"domain": "global",
"reason": "required",
"message": "Login Required",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Login Required"
}
}
Run Code Online (Sandbox Code Playgroud)
我所试图做的是增加一个新的JToken
在 "message": "Login Required"
像 "RetryMessage": "Failed after 10 retries"
我发现了这个如何将一个JToken添加到JObject?我认为这不是很有效,因为错误是一个令牌,而不是一个对象,但我不确定.
我尝试过的:
var JsonObj = JObject.Parse(response);
var RetryMessageJson = JToken.Parse(@"{ ""RetryMessage"" : ""UnKnown""}");
JsonObj["error"]["message"].AddAfterSelf(RetryMessageJson);
Run Code Online (Sandbox Code Playgroud)
我已经尝试了上面的几个版本的代码,他们都回来了以下错误消息:
Newtonsoft.Json.Linq.JProperty cannot have multiple values.
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 20
除非排序真的很重要,否则我怀疑你只想让它成为错误的另一个属性:
// Variable names edited to follow normal C# conventions
var jsonResponse = JObject.Parse(response);
jsonResponse["error"]["retryMessage"] = "Unknown";
Run Code Online (Sandbox Code Playgroud)
使用您的示例JSON,结果是:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "required",
"message": "Login Required",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Login Required",
"retryMessage": "Unknown"
}
}
Run Code Online (Sandbox Code Playgroud)
尽管Jon Skeet的回答是100%正确的,但在您的情况下,您可以完成同样的事情,而无需明确指定确切的路径:
var jsonResponse = JObject.Parse(response);
var newProperty = new JProperty("RetryMessage", "Failed after 10 retries");
jsonResponse.Last.AddAfterSelf(newProperty);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21242 次 |
最近记录: |