我想转换api json数据值c#



你好,我是c#开发新手,我不擅长英语,我试图从json中获取值,但它给出了错误[https://www.tutorialsteacher.com/articles/convert-json-string-to-object-in-csharp]

如果有人可以帮助我简单的代码,我将非常感激。

{
"result": [{
"company": "Server",
"results": [{
"name": "Server-01",
"access": ["8.8.8.8:443", "1.1.1.1:443"],
"is_ok": "0"
}, {
"name": "Server-02",
"access": ["8.8.8.8:443", "1.1.1.1:443"],
"is_ok": "0"
}, {
"name": "Server-03",
"access": ["8.8.8.8:443", "1.1.1.1:443"],
"is_ok": "1"
}, {
"name": "Server-04",
"access": ["8.8.8.8:443", "1.1.1.1:443"],
"is_ok": "0"
}, {
"name": "Server-05",
"access": ["8.8.8.8:443", "1.1.1.1:443"],
"is_ok": "0"
}]
}]
}

c#可以不同。比如。net Framework或。net Core/。net,所以下次请提供你使用哪个框架。

有两种常见的方法来反序列化JSON字符串- JSON。. NET(第三方)或System.Text.Json (. NET的一部分)。

对于正确的反现实,首先必须提供有效的模型。但有时JSON属性违反了c#命名约定,甚至无法在代码中表示(例如,属性名中使用空格或"is_ok"从您的JSON)。为了避免这种情况,您必须使用property attribute来连接代码中的属性和JSON中的属性。它是:

  • [JsonProperty("PropertyName")]为Json。净
  • [JsonPropertyName("PropertyName")]for System.Text.Json

所以,综上所述,您必须添加类似于这样的模型:

public class ResultWrapper
{
[JsonProperty("result")] //use one of it based on selected library
[JsonPropertyName("result")]
public List<Result> Result { get; set; }
}
public class Result
{
[JsonProperty("company")]
[JsonPropertyName("company")]
public string Company { get; set; }

[JsonProperty("results")]
[JsonPropertyName("results")]
public List<ResultItem> Results { get; set; }
}
public class ResultItem
{
[JsonProperty("name")]
[JsonPropertyName("name")]
public string Name { get; set; }

[JsonProperty("access")]
[JsonPropertyName("access")]
public List<string> Access { get; set; }

[JsonProperty("is_ok")]
[JsonPropertyName("is_ok")]
public string IsOk { get; set; }
}

并使用以下反现实方法之一:

//Json.Net
var deserializedJsonNet = JsonConvert.DeserializeObject<ResultWrapper>(jsonFromQuestion);
//System.Text.Json
var deserializedSystemTextJson = JsonSerializer.Deserialize<ResultWrapper>(jsonFromQuestion);

最新更新