我有以下sctructure JSON数据。
Json数据:
{
"items" : [ {
"downloadUrl" : "XXXX",
"path" : "XXXX",
"id" : "XXXX",
"repository" : "XXXX",
"format" : "XXXX",
}, {
"downloadUrl" : "XXXX",
"path" : "XXXX",
"id" : "XXXX",
"repository" : "XXXX",
"format" : "XXXX",
}, {
"downloadUrl" : "XXXX",
"path" : "XXXX",,
"id" : "XXXX",
"repository" : "XXXX",
"format" : "XXXX",
} ],
"continuationToken" : "YYYY"
}
我需要在List(List<repository>
)中获取项值。如何检索值?
downloadUrl,路径,ID,仓库,格式,continuoationToken
我试着像这样下面。
class Program
{
public class repository
{
public NpmPackages items { get; set; }
}
public class NpmPackages
{
[JsonProperty(PropertyName = "downloadUrl")]
public string DownloadUrl { get; set; }
[JsonProperty(PropertyName = "path")]
public string Path { get; set; }
[JsonProperty(PropertyName = "id")]
public string Id { get; set; }
[JsonProperty(PropertyName = "repository")]
public string Repository { get; set; }
[JsonProperty(PropertyName = "format")]
public string Format { get; set; }
}
public static string HttpOperation(string apiUrl)
{
if (string.IsNullOrEmpty(apiUrl) == true)
{
throw new ArgumentNullException(nameof(apiUrl));
}
Uri url = new Uri(apiUrl);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
using (Stream responseStream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
return reader.ReadToEnd();
}
}
static void Main(string[] args)
{
List<repository> packageDetails = new List<repository>();
List<repository> packageData = new List<repository>();
var jsonData = HttpOperation("XXXX");
packageData = JsonConvert.DeserializeObject<List<repository>>(jsonData);
packageDetails.AddRange(packageData);
}
}
虽然尝试这样,但我面临以下错误。
错误详情:
无法将当前JSON对象(例如{&#34; name&#34;:&#34; value&#34;})反序列化为类型System.Collections.Generic.List`1 [npm_clean_up_Tool.Program + NpmPackages]&#39;因为该类型需要JSON数组(例如[1,2,3])才能正确反序列化。 要修复此错误,请将JSON更改为JSON数组(例如[1,2,3])或更改反序列化类型,使其成为普通的.NET类型(例如,不是像整数这样的基本类型,而不是类似的集合类型可以从JSON对象反序列化的数组或List。 JsonObjectAttribute也可以添加到类型中以强制它从JSON对象反序列化。 路径&#39;项目&#39;,第2行,第11位。
请更新您的建议以实现我的目标。
答案 0 :(得分:0)
Newtonsoft.Json.JsonConvert.DeserializeObject<NpmPackages>(jsonstring.ToString());