Json反序列化和使用c#和ASP.NET MVC和Json.NET打印非原语对象
我已经从WenAPI生成了一个json文件,其中包含名称、短文本、地理坐标(包括纬度和经度)以及图像。现在我想反序列化contrller cass中的每个对象,以便在视图中显示这些对象。我的json文件如下所示Json反序列化和使用c#和ASP.NET MVC和Json.NET打印非原语对象,c#,json,asp.net-mvc,json.net,deserialization,C#,Json,Asp.net Mvc,Json.net,Deserialization,我已经从WenAPI生成了一个json文件,其中包含名称、短文本、地理坐标(包括纬度和经度)以及图像。现在我想反序列化contrller cass中的每个对象,以便在视图中显示这些对象。我的json文件如下所示 { "poi":[ { "Name": "Berlin", "Shorttext": "Berlin is the capital of Germany
{
"poi":[
{
"Name": "Berlin",
"Shorttext": "Berlin is the capital of Germany and one of the 16 states of Germany.....",
"GeoCoordinates": {
"Longitude": 13.38333333,
"Latitude": 52.51666667
},
"Images": [
"BA5AB22B.jpg"
]
},
{
"Name": "munich",
"Shorttext": "Munich of the European Union with a population of above 1.5 million.....",
"GeoCoordinates": {
"Longitude": 11.56666667,
"Latitude": 48.13333333
},
"Images": [
"AA3CF664.jpg"
]
}
]
}
这个对象的模型类是-
public class GeoCoordinates
{
public double Longitude { get; set; }
public double Latitude { get; set; }
}
public class Poi
{
public string Name { get; set; }
public string Shorttext { get; set; }
public GeoCoordinates GeoCoordinates { get; set; }
public List<string> Images { get; set; }
}
public class RootObject
{
public List<Poi> poi { get; set; }
}
编辑:我试图通过这种方式获得价值-
var ReadJson = System.IO.File.ReadAllText(@"E:\C# Learning\POI.json");
RootObject json = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<RootObject>(ReadJson);
foreach (var item in json.poi)
{
Console.WriteLine("name: {0}, shorttext : {1}, Geo: {2} ,Image:{3}", item.Name, item.Shorttext,item.GeoCoordinates,item.Images);
}
var ReadJson=System.IO.File.ReadAllText(@“E:\C#Learning\POI.json”);
RootObject json=new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize(ReadJson);
foreach(json.poi中的var项)
{
Console.WriteLine(“名称:{0},短文本:{1},地理:{2},图像:{3}”,item.name,item.shorttext,item.geocations,item.Images);
}
使用,您可以执行类似的操作(它还应该与JavaScriptSerializer一起使用)
:
var ReadJson=System.IO.File.ReadAllText(@“E:\C#Learning\POI.json”);
RootObject json=JsonConvert.DeserializeObject(ReadJson);
foreach(json.poi中的var项)
{
Console.WriteLine(“名称:{0},短文本:{1},纬度:{2},纬度:{3},图像:{4}”,item.name,item.shorttext,item.geocations.Latitude,item.geocations.Longitude,string.Join(“,item.Images));
}
无论如何,你应该解释一下问题是什么。。。您目前的预期输出和输出是什么
看看这些文章:
List<Dictionary<string,string>>()
List()
然后您可以将数据提取为:
var data = JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(ReadJson);
// you can simply pass your JSON string in place of ReadJson if you don't want to create a file
var val1 = data.Select(y => y["property name"]).Single();
var val2 = data.Select(y => y["property name"]).Single();
// and so on
var data=JsonConvert.DeserializeObject(ReadJson);
//如果不想创建文件,只需传递JSON字符串代替ReadJson即可
var val1=data.Select(y=>y[“属性名]).Single();
var val2=data.Select(y=>y[“属性名]).Single();
//等等
好吧,你有了类,还有JSON。。。如果只使用JsonConver.DeserializeObject(json)
,会发生什么?编辑不会解释任何内容。您询问的是反序列化,而不是呈现。真正的问题是什么?JsonConver
是一个打字错误。改用JsonConvert
。@AmitKumarGhosh,sonConvert
是一个打字错误,改用JsonConvert
:)和?你遇到问题了吗?你试过什么吗?为什么这个问题不应该像许多其他问题一样结束呢?顺便说一句,如果你有两个问题,请分别发表两篇文章。这两个问题都有很多答案,您可以更新问题的标题,因为这与解析Json无关。这是关于打印非原始对象的更多信息。是的,我修改了我的问题。
List<Dictionary<string,string>>()
var data = JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(ReadJson);
// you can simply pass your JSON string in place of ReadJson if you don't want to create a file
var val1 = data.Select(y => y["property name"]).Single();
var val2 = data.Select(y => y["property name"]).Single();
// and so on