【问题标题】:C# Deserialize JSON which does not specify a root elementC#反序列化不指定根元素的JSON
【发布时间】:2014-03-03 15:31:58
【问题描述】:

我在处理以下格式的 JSON 时遇到问题,它没有指定根元素。

{
  "name":"Test"
  "age":"15"
  "gender":"Male"

}

我要代表的班级如下所示。

public class Person{

 public string name { get; set; }
 public string age { get; set; }
 public string gender { get; set; }

}

我处理的任何网络方法都如下所示。

[System.Web.Services.WebMethod]
public boolean deserializePerson(Person person)
{
   //implementation code
}

此 Web 服务方法无法反序列化 JSON,因为它需要以下格式的 JSON,并指定了根元素(在本例中为类名)。

{
   Person:{
      "name":"Test"
      "age":"15"
      "gender":"Male"
     }
}

有什么方法可以反序列化 JSON 而无需指定根元素 Person? 也许通过注释?

谢谢。

【问题讨论】:

  • 例如,如果您的方法是DoSomething(Person person, Company company),您将如何使用平面json传递参数

标签: c# json web-services


【解决方案1】:

如果你两边都有这个类,它会很好地工作

public class Person
{

    public string name { get; set; }
    public string age { get; set; }
    public string gender { get; set; }

    public string getClassSerialized()
    {
        return new JavaScriptSerializer().Serialize(this);
    }

    public Person getClassDeserialized(string sSerializedClass)
    {
        return new JavaScriptSerializer().Deserialize<Person>(sSerializedClass);
    }
}

要让课程回来,你可以这样得到它:

var myPerson = new Person().getClassDeserialized(sSerializedClass);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-27
    • 2012-02-08
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 2011-06-24
    • 2018-07-01
    相关资源
    最近更新 更多