C# 将JSON数据转换为对象
我对这个很陌生。如果我犯了什么错误,请原谅 我有JSON格式的数据。我可以直接读取这些数据并在C代码中使用吗 从我在互联网上阅读的理解来看,我认为我必须将它转换成一种对象形式来使用数据。我说得对吗 如果是,那么我看到这个方法转换如下:C# 将JSON数据转换为对象,c#,json,C#,Json,我对这个很陌生。如果我犯了什么错误,请原谅 我有JSON格式的数据。我可以直接读取这些数据并在C代码中使用吗 从我在互联网上阅读的理解来看,我认为我必须将它转换成一种对象形式来使用数据。我说得对吗 如果是,那么我看到这个方法转换如下: string data = JsonConvert.DeserializeObject<string>(getmyissue()); Program.cs using System; using System.Collections.Generic;
string data = JsonConvert.DeserializeObject<string>(getmyissue());
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Example
{
public class MyIssue
{
public string name{get;set;}
public string description { get; set; }
public string created { get;set; }
public string updated{get;set;}
public string displayName { get; set; }
}
}
MyIssue obj=null;
try
{
obj = JsonConvert.DeserializeObject<MyIssue>(manager.getmyissue());
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
Console.WriteLine("Name: "+obj.name);
MyIssue obj=null;
尝试
{
obj=JsonConvert.DeserializeObject(manager.getmyissue());
}
捕获(例外e)
{
控制台写入线(e.Message);
}
Console.WriteLine(“名称:“+obj.Name”);
您得到的JSON已经是一个字符串,因此将其转换为字符串没有多大意义。您需要创建反映JSON字符串表示的结构的类
例如,要将以下JSON转换为对象,必须为用户创建一个类:
{"user":{"name":"asdf","teamname":"b","email":"c","players":["1","2"]}}
public class User
{
public string name { get; set; }
public string teamname { get; set; }
public string email { get; set; }
public Array players { get; set; }
}
那么您应该能够使用以下功能:
JavaScriptSerializer jss= new JavaScriptSerializer();
List<User> users = jss.Deserialize<List<User>>(jsonResponse);
JavaScriptSerializer jss=new JavaScriptSerializer();
List users=jss.Deserialize(jsonResponse);
您得到的JSON已经是一个字符串,因此将其转换为字符串没有多大意义。您需要创建反映JSON字符串表示的结构的类
例如,要将以下JSON转换为对象,必须为用户创建一个类:
{"user":{"name":"asdf","teamname":"b","email":"c","players":["1","2"]}}
public class User
{
public string name { get; set; }
public string teamname { get; set; }
public string email { get; set; }
public Array players { get; set; }
}
那么您应该能够使用以下功能:
JavaScriptSerializer jss= new JavaScriptSerializer();
List<User> users = jss.Deserialize<List<User>>(jsonResponse);
JavaScriptSerializer jss=new JavaScriptSerializer();
List users=jss.Deserialize(jsonResponse);
您得到的JSON已经是一个字符串,因此将其转换为字符串没有多大意义。您需要创建反映JSON字符串表示的结构的类
例如,要将以下JSON转换为对象,必须为用户创建一个类:
{"user":{"name":"asdf","teamname":"b","email":"c","players":["1","2"]}}
public class User
{
public string name { get; set; }
public string teamname { get; set; }
public string email { get; set; }
public Array players { get; set; }
}
那么您应该能够使用以下功能:
JavaScriptSerializer jss= new JavaScriptSerializer();
List<User> users = jss.Deserialize<List<User>>(jsonResponse);
JavaScriptSerializer jss=new JavaScriptSerializer();
List users=jss.Deserialize(jsonResponse);
您得到的JSON已经是一个字符串,因此将其转换为字符串没有多大意义。您需要创建反映JSON字符串表示的结构的类
例如,要将以下JSON转换为对象,必须为用户创建一个类:
{"user":{"name":"asdf","teamname":"b","email":"c","players":["1","2"]}}
public class User
{
public string name { get; set; }
public string teamname { get; set; }
public string email { get; set; }
public Array players { get; set; }
}
那么您应该能够使用以下功能:
JavaScriptSerializer jss= new JavaScriptSerializer();
List<User> users = jss.Deserialize<List<User>>(jsonResponse);
JavaScriptSerializer jss=new JavaScriptSerializer();
List users=jss.Deserialize(jsonResponse);
在C#/.NET程序中反序列化Json的最简单方法是使用brilliant NewtonSoft Json库
有很多方法可以做到这一点,但我必须承认,NS LIB只是继续完成任务(不,我不是团队的成员等,只是一个狂热的用户:-))
做你想做的事例如,如果你有:
您首先要构建一个对象来表示它,如下所示:
您将得到一个动态对象,该对象如下所示:
result = dynamic
{
public string Name { get; set; }
public bool AllowAccess { get; set; }
public List<string> Areas { get; set; }
}
将使您能够访问名称字段的内容等
如果您的JSON随后更改为:
{'Name': 'A person', 'AllowAccess': true,'Areas': ['Sales','Admin'], 'Location': 'The World' }
您的对象将神奇地拥有一个名为“Location”的属性,其中包含值“the World”,您可以使用以下方法访问该值:
result.Location
在您的情况下,这将允许您定义具体对象,例如:
public MyObject
{
public string Name { get; set; }
public string Email { get; set; }
}
然后执行以下操作(假设入站JSON在called Name&Email中具有属性):
string jsonString=“//您的json格式字符串数据在此处”;
var result=JsonConvert.DeserializeObject(jsonString);
MyObject MyObject=新的MyObject
{
Name=result.Name,
Email=result.Email
}
然后丢弃动态对象,因为不再需要它
这种方法的最大问题是维护模型。手动属性分配对于一小部分属性和对象来说是很好的,但随着软件的发展,它很快就会成为一个巨大的维护噩梦
我相信不需要太多想象,如果你必须为100个不同的JSON请求和50个不同类型的对象执行此操作,你将面临什么样的任务
由于这个原因,使用这种方法,你真的应该考虑使用某种映射技术,比如“AutoPAPER”,但是现在我建议你把它留到以后再开始研究它。因为它不能帮助您清楚地处理这种动态方法。
在C#/.NET程序中反序列化Json的最简单方法是使用brilliant NewtonSoft Json库
有很多方法可以做到这一点,但我必须承认,NS LIB只是继续完成任务(不,我不是团队的成员等,只是一个狂热的用户:-))
做你想做的事例如,如果你有:
您首先要构建一个对象来表示它,如下所示:
您将得到一个动态对象,该对象如下所示:
result = dynamic
{
public string Name { get; set; }
public bool AllowAccess { get; set; }
public List<string> Areas { get; set; }
}
将使您能够访问名称字段的内容等
如果您的JSON随后更改为:
{'Name': 'A person', 'AllowAccess': true,'Areas': ['Sales','Admin'], 'Location': 'The World' }
您的对象将神奇地拥有一个名为“Location”的属性,其中包含值“the World”,您可以使用以下方法访问该值:
result.Location
在您的情况下,这将允许您定义具体对象,例如:
public MyObject
{
public string Name { get; set; }
public string Email { get; set; }
}
然后执行以下操作(假设入站JSON在called Name&Email中具有属性):
string jsonString=“//您的json格式字符串数据在此处”;
var result=JsonConvert.DeserializeObject(jsonString);
MyObject MyObject=新的MyObject
{
Name=result.Name,
Email=result.Email
}
然后丢弃动态对象,因为不再需要它
这种方法的最大问题是维护模型。手动属性分配对于一小部分属性和对象来说是很好的,但随着软件的发展,它很快就会成为一个巨大的维护噩梦
我相信不需要太多想象你会做什么样的任务