将C#类转换为Json

3

如何使用 .NET 将多个 C# 类序列化为一个 JSON 字符串,使得 JSON 数据中的变量能够保存可变值。

代码示例:

string outputJSON = JsonConvert.SerializeObject();

以下是需要序列化的类:

 public class Rootobject
    {
    public string Number { get; set; }
        public string RequestedDeviceType { get; set; }
        public string DeliveryMethod { get; set; }
        public Customer Customer { get; set; }
        public Vehicle Vehicle { get; set; }
    }

    public class Customer
    {
        public Contacts Contacts { get; set; }
        public string Name { get; set; }
        public string Number { get; set; }
        public bool OverrideData { get; set; }
    }

    public class Contacts
    {
        public string FirstName { get; set; }
        public string Name { get; set; }
        public string Email { get; set; }
        public string City { get; set; }
        public string Address { get; set; }
        public string MobilePhone { get; set; }
    }

    public class Vehicle
    {
        public string VIN { get; set; }
        public string MakeModelCode { get; set; }
        public string LicensePlate { get; set; }
        public string Make { get; set; }
        public string Model { get; set; }
        public int YearOfInitialRegistration { get; set; }
        public string MotorType { get; set; }
        public bool OverrideData { get; set; }
    }

}

他们必须序列化为以下的json结构,我必须能够捕获用户输入并将值设置到json文件中。
{
  "Number": "xTest",
  "RequestedDeviceType": "XXXX",
  "DeliveryMethod": "XXXX",
  "Customer": {
    "Contacts": {

      "FirstName": "John",
      "Name": "Doe",
      "Email": "mail@demo.com",
      "City": "Harare",
      "Address": "XXXXX",
      "MobilePhone": "00000000"

    },
    "Name": "Peter Chaneta",
    "Number": "4567865678",
    "OverrideData": true
  },
  "Vehicle": {
    "VIN": "weryts55444554",
    "MakeModelCode": "34010",
    "LicensePlate": "SS 100 GP",
    "Make": "RANGE ROVER",
    "Model": "SPORT",
    "YearOfInitialRegistration": 2016,
    "MotorType": "Petrol",
    "OverrideData": true
  }
}

1
string output = JsonConvert.SerializeObject(yourobject); 这句代码的作用是将你的对象序列化为 JSON 字符串。JSON 表示方式反映了你的类组成,这就是它的工作。 - haronaut
3个回答

6
我猜你在使用JSON.net。如果没有的话,你可以通过Nuget-Packet Manager获取它。
你把你的类叫做"Contacts",你想拥有多个联系人吗?如果是,你可能想在RootObject上使用一个List。
现在,如果你使用:
var data = new Rootobject();
var dataString = JsonConvert.SerializeObject(data);

你已经按要求将所有数据存储在字符串中。从这里开始,你可以将其写入文件。 如果你想更改数据并再次读取它,可以使用以下内容:
Rootobject data2 = JsonConvert.DeserializeObject<Rootobject>(dataString);

现在你可以在任何输入控件中显示数据或更改数据。(网站/Windows表单/XAML/控制台...)。您可以在json.net的官方文档(https://www.newtonsoft.com/json)中找到其他信息。否则,您的问题就太笼统了。

1

如果您愿意与第三方在线共享您的类,您可以使用下面的链接直接从类中生成JSON。

C#转JSON


3
似乎已经不再可用了 - James Hurley

0
作为 JSON.Net 的替代方案,您也可以使用位于 System.Web.Extensions 命名空间中的一个:
using System.Web.Extensions;


public string SerializeClassToJSON(object baseClass)
{
    var jSerializer = new JavascriptSerializer();
    var jsonString = jSerializer.Serialize(baseClass);

    return jsonString;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接