.NET处理JSON提要

.NET处理JSON提要,.net,.net,我正在寻找一个简单的例子,从url调用提要,然后在数据中循环,在C#中提取值 我设法将提要数据放入如下字符串变量中。我查看了newtonsoft.Json dll,但找不到一个简单的提取数据的示例。数据并不复杂,我已将其添加到底部 基本上,feedData现在包含了我的JSON数据,我想把它转换成一个JSON对象,然后foreach将值取出 static void Main(string[] args) { string _feedData = GetJ

我正在寻找一个简单的例子,从url调用提要,然后在数据中循环,在C#中提取值

我设法将提要数据放入如下字符串变量中。我查看了newtonsoft.Json dll,但找不到一个简单的提取数据的示例。数据并不复杂,我已将其添加到底部

基本上,feedData现在包含了我的JSON数据,我想把它转换成一个JSON对象,然后foreach将值取出

        static void Main(string[] args)
    {

        string _feedData = GetJSONFeed();


    }
     public static string GetJSONFeed()
    {
        string formattedUri = "http://www.myJsonFeed.com/blah.json";

        HttpWebRequest webRequest = GetWebRequest(formattedUri);
        HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
        string jsonResponse = string.Empty;
        using (StreamReader sr = new StreamReader(response.GetResponseStream()))
        {
            jsonResponse = sr.ReadToEnd();
        }
        return jsonResponse;
    }

    private static HttpWebRequest GetWebRequest(string formattedUri)
    {
        // Create the request’s URI.
        Uri serviceUri = new Uri(formattedUri, UriKind.Absolute);

        // Return the HttpWebRequest.
        return (HttpWebRequest)System.Net.WebRequest.Create(serviceUri);
    }
我的JSON数据如下所示:

[
 {
    "id": "9448",
    "title": "title title title",
    "fulltext": "main body text",
   "url": "http://www.flikr.co.uk?id=23432"
 },
 {
    "id": "9448",
    "title": "title title title",
    "fulltext": "main body text",
   "url": "http://www.flikr.co.uk?id=23432"
 }
]
谢谢你的帮助。
Rob

创建一个类来保存提要数据的实例

public class FeedData
{
    public string id { get; set; }
    public string title { get; set; }
    public string fulltext { get; set; }
    public string url { get; set; }
}
然后,将json响应作为字符串反序列化到FeedData对象列表中

var serializer = new DataContractJsonSerializer(typeof(List<FeedData>));
using (var stream = new MemoryStream(Encoding.Unicode.GetBytes(jsonResponse)))
{
   var serializer = new DataContractJsonSerializer(typeof(List<FeedData>));
   return serializer.ReadObject(ms) as List<FeedData>;
}
var serializer=newdatacontractjsonserializer(typeof(List));
使用(var stream=newmemoryStream(Encoding.Unicode.GetBytes(jsonResponse)))
{
var serializer=newdatacontractjsonserializer(typeof(List));
将serializer.ReadObject(ms)作为列表返回;
}

请注意,您的返回值现在应该是
List
IEnumerable

而不是JSON对象,我想您需要将JSON字符串解析为CLR对象,对吗

本页提到了这一点。

遵循项目:

如果您只对从JSON获取值感兴趣,没有要序列化或反序列化的类,或者JSON与您的类完全不同,并且您需要手动读取和写入对象,那么您应该使用LINQ to JSON。LINQtoJSON允许您在.NET中轻松读取、创建和修改JSON

以及LINQ到JSON的示例:

string json = @"{
  ""Name"": ""Apple"",
  ""Expiry"": new Date(1230422400000),
  ""Price"": 3.99,
  ""Sizes"": [
    ""Small"",
    ""Medium"",
    ""Large"
  ]
}";

JObject o = JObject.Parse(json);
string name = (string)o["Name"];
// Apple
JArray sizes = (JArray)o["Sizes"];
string smallest = (string)sizes[0];
// Small

这篇文章有你需要的一切: