Map entity to JSON using JavaScriptSerializer

前端 未结 2 558
离开以前
离开以前 2020-12-19 04:11

My entities are like this:

class Address
{
     public string Number { get; set; }
     public string Street { get; set; }
     public string City { get; set         


        
相关标签:
2条回答
  • 2020-12-19 04:40

    You can serialize an anonymous type with JavaScriptSerializer, so you might try projecting your object into the shape you want to serialize:

    person.Select(s => new { PER_NAME = s.Name, PER_AGE = s.Age });
    
    0 讨论(0)
  • 2020-12-19 04:53

    You need to add DataContract attributes to your classes and DataMember to the properties. Set Name property of DataMemeber attribute to your custom property name and Order property to define the order.

    [DataContract]
    public class Person
    {
        [DataMember(Name = "PER_NAME", Order = 1)]
        public string Name { get; set; }
    
        [DataMember(Name = "PER_AGE", Order = 2)]
        public int Age { get; set; }
    
        [DataMember(Name = "PER_ADDRESS", Order = 3)]
        public Address PostalAddress { get; set; }
    }
    

    Then you can do this:

    var newPerson = new Person()
    {
        Name = "Kushan",
        Age = 25,
        PostalAddress = new Address()
        {
            Number = "No 25",
            Street = "Main Street",
            City = "Matale",
            Country = "Sri Lanka"
        }
    };
    
    MemoryStream stream = new MemoryStream();
    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Person));
    ser.WriteObject(stream, newPerson);
    

    To check the result:

    var result = Encoding.ASCII.GetString(stream.ToArray());
    
    {"PER_NAME":"Kushan","PER_AGE":25,"PER_ADDRESS":{"ADD_NUMBER":"No 25","ADD_STREET":"Main Street","ADD_CITY":"Matale","ADD_COUNTRY":"Sri Lanka"}}
    
    0 讨论(0)
提交回复
热议问题