.NET рдХреЗ рд▓рд┐рдП JSON Serializers рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рддреБрд▓рдирд╛

.NET рдореЗрдВ Json рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ ASP.NET Mvc рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рдЙрддреНрддрд░ рдХрд╛ рдЧрдарди рд╣реИред рдмреЗрд╢рдХ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ JSON рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдкрддрд▓реА рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреЛ рдХреИрд╕реЗ рддреЗрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣ рдЖрд▓реЗрдЦ .NET / рдореЛрдиреЛ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ JSON рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рдЕрд╡рд▓реЛрдХрди рдирд╣реАрдВ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдХреНрд░рдорд╛рдВрдХрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдордп рдмрд┐рддрд╛рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рдереА, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдорд╛рдирдЪрд┐рддреНрд░рдгред рдпрд╣реА рд╣реИ, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрд░рдордмрджреНрдзрддрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рдЬрд╛рдП рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рдХрд╛рдо рдХрд░реЗред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рдорд╛рдВрдХрди рдЙрдкрдХрд░рдг рдЕрдзреНрдпрдпрди рдореЗрдВ рдЧрд┐рд░ рдЧрдП:
  1. рд╕рд░рд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдШрдирди
  2. рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд░реНрд╡рд░ (.NET рдлреНрд░реЗрдорд╡рд░реНрдХ)
  3. DataContractJsonSerializer (.NET рдлреНрд░реЗрдорд╡рд░реНрдХ 3.5)
  4. рдиреНрдпреВрдЯрди Json.net ( json.codeplex.com , james.newtonking.com/pages/json-net.asp )
  5. JsonEx ( code.google.com/p/jsonexserializer )
  6. рдзрд╛рд░рд╛рдкреНрд░рд╡рд╛рд╣ рдЬреЛрдВрд╕ ( fluentjson.codeplex.com , code.google.com/p/fluent-json )


рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП, рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП:
рдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 1ред рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рдХреЛ 10,000 рдмрд╛рд░ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдЙрд╕реА рд╡рд╕реНрддреБ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 2 1 рдмрд╛рд░ рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рдмрдирд╛рдпрд╛ рдФрд░ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред 10,000 рдмрд╛рд░ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдЗрд╕ рдЙрдореНрдореАрдж рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ "рд╕реНрдорд╛рд░реНрдЯ" рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ, рдкрд╣рд▓реЗ рд╕реЗ рд╡рд╕реНрддреБ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рд░реВрдкрд╛рдВрддрд░рдг рддреЗрдЬреА рд╕реЗ рдХрд░реЗрдЧрд╛ред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХрдХрд░рдг рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдЖрдЧреЗ рдРрд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдбреИрд╢ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдкрд░реАрдХреНрд╖рдг рдкрд░реНрдпрд╛рд╡рд░рдг:
рд╡рд┐рд╖рдпреЛрдВ рдореЗрдВ рджреЛ рд╡рд░реНрдЧ рд╣реИрдВ рдЬреЛ рдордВрдЪ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдореЛрдиреЛ рдФрд░ .NET рдореЗрдВ рдЙрдирдХреЗ рдХрд╛рдо рдореЗрдВ рдЕрдВрддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдореБрдЦреНрдп рдФрд░ рдПрдХрдорд╛рддреНрд░ рдУрдПрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдмрдВрдЯреВ рд╣реИ, рдЗрд╕рд▓рд┐рдП .NET рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рд╡рд░реНрдЪреБрдЕрд▓рдмреЙрдХреНрд╕ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдФрд░ рд╕рдЯреАрдХ рд╣реЛрдирд╛:

рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдЧрддрд┐


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рд╕рд░рд▓ ToString () рдФрд░ рд╕рдВрдШрдирди рджреНрд╡рд╛рд░рд╛ рдХреНрд░рдордмрджреНрдзрддрд╛ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рджреВрдВрдЧрд╛ред "рдЙрддреНрдкрд╛рджрди" рдореЗрдВ рдпрд╣ рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рджреБрд░реНрд▓рдн рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣реА рдЙрдЪрд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИред рдореИрдВ рдЗрд╕реЗ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВред JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рддреЗрдЬреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо:
рдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 1рдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 2
рдиреЗрдЯ0.25 рд╕реЗрдХрдВрдб-
рдореЛрдиреЛ0.6 рд╕реЗрдХрдВрдб-

рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдкрд░реАрдХреНрд╖рдг рд╕рдВрдЦреНрдпрд╛ 2 рдХреЛ рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред

JavaScriptSerializer


JavaScriptSerializer, .NET. Mono рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ System.Web.Script.Serialization рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:
var serializer = new JavaScriptSerializer();// string jsonResult = serializer.Serialize(Program.bookA);// 


JavaScriptConverter, RegisterConverters рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд░рдордмрджреНрдз рддрд░реАрдХреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдШреЛрд╖рд┐рдд рдХреА рдЧрдИ рд╣реИред рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрдЯрд╛рдЗрдо рдпрд╛ рдПрдирдо рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдереЗред

рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо:
рдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 1рдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 2
рдиреЗрдЯ4 рд╕реЗрдХрдВрдб3.5 рд╕реЗрдХрдВрдб
рдореЛрдиреЛ5 рд╕реЗрдХрдВрдб5 рд╕реЗрдХрдВрдб


DataContractJsonSerializer


рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдЙрдкрд▓рдмреНрдз рдПрдХ рдФрд░ рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рд╣реИ System.Runtime.Serialization.Json рдирд╛рдо рд╕реНрдерд╛рдиред рдЙрдкрдпреЛрдЧ рдореЗрдВ, рдпрд╣ рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХреАрдХрд░рдг рдзрд╛рд░рд╛ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдирд╣реАрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 var serializer = new DataContractJsonSerializer(typeof(Book)); MemoryStream ms = new MemoryStream(); serializer.WriteObject(ms, Program.bookA); string jsonResult = Encoding.Default.GetString(ms.GetBuffer()); 


.NET рдФрд░ рдореЛрдиреЛ рдореЗрдВ рдЗрд╕ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЕрдВрддрд░ рд╣реИрдВред .NET рдореЗрдВ, рдЖрдкрдХреЛ рдХреНрд░рдорд╢рдГ [DataContract] рдФрд░ [DataMember] рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреНрд░рдорд┐рдХ рд╡рд░реНрдЧреЛрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЛрдиреЛ рдореЗрдВ, рдпреЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИрдВред
рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЕрдВрддрд░ рдХреЗрд╡рд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реИ:
рдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 1рдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 2
рдиреЗрдЯ1.5 рд╕реЗрдХрдВрдб1.5 рд╕реЗрдХрдВрдб
рдореЛрдиреЛ34 рд╕реЗрдХрдВрдб34 рд╕реЗрдХрдВрдб

рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ 1.5 рд╕реЗрдХрдВрдб рдХрд╣реВрдВрдЧрд╛ - рдпрд╣ рд╕рднреА рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдордп рд╣реИ, 34 рд╕реЗрдХрдВрдб - рд╕рдмрд╕реЗ рдЦрд░рд╛рдмред

рдзрд╛рд░рд╛рдкреНрд░рд╡рд╛рд╣ рдЬреЛрдВрд╕


рдЗрд╕ рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рдХреЗ рд▓рд╛рдн (рдФрд░ рдЬрд┐рдирд╕реЗ рдФрд░ рдиреБрдХрд╕рд╛рди) рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдореИрдкрд┐рдВрдЧ рдЧреБрдгреЛрдВ рдХрд╛ рдПрдХ рд▓рдЪреАрд▓рд╛ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдкрд░рдд рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИред рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕ рдореЗрдВ рдмрд┐рдЬрдиреЗрд╕ рд▓реЙрдЬрд┐рдХ рд▓реЗрдпрд░ рдХреЗ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдХреНрд▓рд╛рд╕ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рджрд╛рд╡рд╛ рдХрд┐рдП рдЧрдП "рдЪрд┐рдкреНрд╕" рдореЗрдВ рд╕реЗ рдПрдХ рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЗ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЬреЛ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рджреЗрддрд╛ рд╣реИред рдореЗрд░рд╛ рдорд╛рдорд▓рд╛ рдирд╣реАрдВред

рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдирдореВрдирд╛ рдХреЛрдб рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
 var serializer = Json.EnoderFor<Book>(config => config .MapType<Book>(map => map .AllFields() .Field<DateTime>(field => field.PubDate, pubDate => pubDate .EncodeAs<string>(value => value.ToShortDateString())) .Field<BookType>(field => field.Type, type => type .EncodeAs<int>(value => (int)value) .To("book_type"))) .MapType<Author>(map => map.AllFields()) .UseTidy(true) ); string jsonResult = serializer.Enode(Program.bookA); 


рдпрджрд┐ рд╕реАрд░рд┐рдпрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдПрдиреНрдпреВрдорд░реЗрд╢рди рдкреНрд░рдХрд╛рд░ рдпрд╛ рдбреЗрдЯрд╛рдЗрдо рдХреЗ рдЧреБрдг рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣реИ, рддреЛ рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИред рдЕрдкрдиреЗ рджрдо рдкрд░, рдлреНрд▓реБрдПрдВрдЯ рдЬреЛрдВрд╕рди рдЖрд╢реНрдЪрд░реНрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред

рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо:
рдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 1рдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 2
рдиреЗрдЯ52.5 рд╕реЗрдХрдВрдб9 рд╕реЗрдХрдВрдб
рдореЛрдиреЛ34 рд╕реЗрдХрдВрдб10 рд╕реЗрдХрдВрдб

JsonExSerializer


рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЖрд╢реНрд╡рд╛рд╕рди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рдЙрдкрдХрд░рдг рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рдЯреАрдХ рдХреНрд░рдорд╛рдВрдХрди / рдбреАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛ред рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:
 var serializer = new Serializer(typeof(Book)); var memoryStream = new MemoryStream(); serializer.Serialize(Program.bookA, memoryStream); var jsonResult = Encoding.Default.GetString(memoryStream.GetBuffer()); 


JsonEx рдХреА рдПрдХ рд░рд╕рджрд╛рд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрд╡рд░реВрдкрдг рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреА рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝рддрд╛ рд╣реИ:
 /* Created by JsonExSerializer Assembly: JsonTestConsole, Version=1.0.4347.32516, Culture=neutral, PublicKeyToken=null Type: JsonTestConsole.Book */ 

рд╕рд╣реЗрдЬрддреЗ рд╕рдордп рд╕реНрд╡рд░реВрдкрдг рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдПрдХ рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо:
рдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 1рдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 2
рдиреЗрдЯ32 рд╕реЗрдХрдВрдб8 рд╕реЗрдХрдВрдб
рдореЛрдиреЛ34 рд╕реЗрдХрдВрдб10 рд╕реЗрдХрдВрдб

рдиреНрдпреВрдЯрди JSON.NET


рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдПрдХ рдкреЗрдЪреАрджрд╛ рд░реЗрдЦрд╛ рд╣реИ: "рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди, .NET рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЬреЗрдПрд╕рдПрди рд╕реАрд░реАрдЬрд╝рд░реНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬрд╝"ред рдиреНрдпреВрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдирдореВрдирд╛ рдХреЛрдб рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ:
 string jsonResult = JsonConvert.SerializeObject(Program.bookA); 


рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдкреНрд░рд╛рд░рдВрднрд┐рдХрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╕рдордп рджрд┐рдЦрд╛рддрд╛ рд╣реИ:
рдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 1рдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 2
рдиреЗрдЯ1.5 рд╕реЗрдХрдВрдб-
рдореЛрдиреЛреи рд╕реЗрдХрдВрдб-


рдирд┐рд╖реНрдХрд░реНрд╖


рджреЛрдиреЛрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдордп (рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ) рдмрдврд╝рддреЗ рд╕рдордп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо (рдХреЙрд▓рдо K рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХрд┐рддрдиреА рдмрд╛рд░ "рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдШрдирди" рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдорд╛ рд╣реИ):

рдордВрдЪрдореЛрдиреЛ.рдиреЗрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ
serializerрдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 1рдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 2рдХрд╢реНрдореАрд░рдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 1рдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 2рдХрд╢реНрдореАрд░
рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдХреНрд░рд╛рдВрддрд┐600-1250-1
рдиреНрдпреВрдЯрди JSON.NET2000-3.41500-6
JavaScriptSerializer500040008.3 / 6.7170017006.8
JsonExSerializer340001000056.7 / 16.74000350016/14
рдзрд╛рд░рд╛рдкреНрд░рд╡рд╛рд╣ рдЬреЛрдВрд╕340001000056.7 / 16.7320008000128/32
DataContractJsonSerializer340003400056.7 / 56.7150015006

рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдореЛрдиреЛ рдХреЗ рддрд╣рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ рдпрд╛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рддреГрддреАрдп-рдкрдХреНрд╖ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдиреНрдпреВрдЯрди JSON.net рдХреА рдУрд░ рдореБрдбрд╝рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ - рдпрд╣ рд╡рд┐рди + .NET рдФрд░ рд▓рд┐рдирдХреНрд╕ + рдореЛрдиреЛ рджреЛрдиреЛрдВ рдореЗрдВ рдЕрдЪреНрдЫреЗ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд▓рдХреНрд╖реНрдп .NET рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд DataContractJsonSerializer рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдпрджрд┐ рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдк рдЖрдкрдХреЛ рд╕реВрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдкрдиреА рдЦреБрдж рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рд╣реИред

рдпрд╣рд╛рдБ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ: code.google.com/p/research-net-json/source/browse/Main.cs ред рддреГрддреАрдп-рдкрдХреНрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд▓рд┐рдВрдХ:


рдпреБрдкреАрдбреАред рдореИрдВ рдХрдИ рдФрд░ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░реНрд╕ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдкреВрд░рдХ рдХрд░рддрд╛ рд╣реВрдВ ( atd , Skyboy , Guderian рдФрд░ kekekeks рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж):
рдордВрдЪрдореЛрдиреЛ.рдиреЗрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ
serializerрдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 1рдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 2рдХрд╢реНрдореАрд░рдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 1рдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 2рдХрд╢реНрдореАрд░
рдиреНрдпреВ рд╕реНрдЯреНрд░рд┐рдВрдЧрдмрд░реНрд╕реНрдЯ (400)550-0.9270-1
ServiceStack1300-2.21200-4.8
рддреЗрдЬ рдЬрд╕рдиреи ремрежреж-4.31200-4.8
Jayrock8200-13.79200-36.8

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдирдпрд╛ рдиреЗрддрд╛ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИ - ServiceStackред

PS рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рдЧрд╝рд▓рддреА рджрд┐рдЦрддреА рд╣реИ, рдпрд╛ рдЖрдк рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рд▓рд┐рдЦрд┐рдП, рдореИрдВ рдЦрд╝реБрд╢реА рд╕реЗ рд▓реЗрдЦ рдХреЛ рдкреВрд░рдХ рдХрд░реВрдБрдЧрд╛ред

Source: https://habr.com/ru/post/In133778/


All Articles