我从Steam网络API中检索了一个非常大的JSON文件。它有多个对象和令牌。我想知道在C#中读取这个文件的最佳方法是什么。
此程序需要解码的数据类型示例如下:http://pastebin.com/nNw7usZW
我感兴趣的唯一数据是对象“rgDescriptions”中的项目“icon_url_large”,“market_name”和“type”。到目前为止,我已尝试使用
WebClient c = new WebClient();
var json = c.DownloadString(url);
JObject o = JObject.Parse(json);
不确定从何处开始,或者如何使用解析器结果。 最后,我想将“market_name”值列表放入下拉框中。
由于
答案 0 :(得分:1)
您可以使用Newtonsoft.Json.dll
,因为您必须创建一个类并在其中声明一个属性,以便您可以DeserializeObject并仅使用您想要的那些属性。
像
public class MyClass
{
public int First { get; set; }
public string Name { get; set; }
}
var abc = JsonConvert.DeserializeObject<MyClass>(jsonData);
答案 1 :(得分:0)
您可以创建一个与您的json表示相匹配的类,并使用JsonConvert.DeserializeObject方法对其进行反序列化,或者保留您的JObject。 JObject是动态对象,因此您可以轻松地进入动态对象树。
使用JsonConvert.DeserializeObject
class MyDataObject
{
public string Data1{get;set;}
[...]
}
string jsonText = ...;
var dataObject = JsonConvert.DeserializeObject<MyDataObject>(jsonText);
var myData = dataObject.Data1;
使用JObject
WebClient c = new WebClient();
var json = c.DownloadString(url);
dynamic o = JObject.Parse(json);
var myData = o.Data1;
JObject选项更简单,但您不会从使用它的静态类型中受益。请享用! :)