这个问题被多次询问,但答案不符合我的需要。 我有一个示例JSON字符串,它是一个JSON数组。 我想解析它并能够选择要打印的值
在我的第一堂课中,我将JSON下载到字符串中并使用jsonConvert.DeserializeObject解析它
using Newtonsoft.Json;
namespace JSON_parser_2
{
class Program
{
static void Main(string[] args)
{
WebClient client = new WebClient();
string downloadedString = client.DownloadString("https://jsonplaceholder.typicode.com/posts");
var result = JsonConvert.DeserializeObject<jsonStorage>(downloadedString);
“JsonStorage”是我定义以下内容的类
public string userId { get; set; }
public string id { get; set; }
public string title { get; set; }
public string body { get; set; }
现在,在我的第一堂课中,我想要打印整个解析的JSON或仅打印标题或正文,我该怎么办呢? 最后,我想打印来自给定链接的所有样本评论。
答案 0 :(得分:1)
执行此操作的一种方法是使用Flurl.Http
库检索json是强类型JsonStorage
对象的列表。通过将其强制转换为强力对象列表,您可以控制打印哪些属性。只需下载Flurl.Http
nuget包,然后您就可以使用以下代码:
using System;
using System.Collections.Generic;
using Flurl.Http;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var httpResponse = "https://jsonplaceholder.typicode.com/posts"
.GetJsonAsync<List<JsonStorage>>();
httpResponse.Wait();
var results = httpResponse.Result;
foreach(var result in results)
{
Console.WriteLine($"title: {result.title}, body: {result.body}");
}
Console.ReadLine();
}
}
class JsonStorage
{
public string userId { get; set; }
public string id { get; set; }
public string title { get; set; }
public string body { get; set; }
}
}
答案 1 :(得分:0)
public class jsonStorage
{
// your properties here
...
...
// override the ToString
public override string ToString()
{
return "userid=" + userId + Environment.NewLine +
"id=" + id + Environment.NewLine +
"title=" + title + Environment.NewLine +
"body=" + body;
}
}
主要是在反序列化之后,执行ToString()
var result = JsonConvert.DeserializeObject<jsonStorage>(downloadedString);
Console.WriteLine(result.ToString());