C# 将JSON数据转换为对象

C# 将JSON数据转换为对象,c#,json,C#,Json,我对这个很陌生。如果我犯了什么错误,请原谅 我有JSON格式的数据。我可以直接读取这些数据并在C代码中使用吗 从我在互联网上阅读的理解来看,我认为我必须将它转换成一种对象形式来使用数据。我说得对吗 如果是,那么我看到这个方法转换如下: string data = JsonConvert.DeserializeObject<string>(getmyissue()); Program.cs using System; using System.Collections.Generic;

我对这个很陌生。如果我犯了什么错误,请原谅

我有JSON格式的数据。我可以直接读取这些数据并在C代码中使用吗

从我在互联网上阅读的理解来看,我认为我必须将它转换成一种对象形式来使用数据。我说得对吗

如果是,那么我看到这个方法转换如下:

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
}
然后丢弃动态对象,因为不再需要它

这种方法的最大问题是维护模型。手动属性分配对于一小部分属性和对象来说是很好的,但随着软件的发展,它很快就会成为一个巨大的维护噩梦

我相信不需要太多想象你会做什么样的任务