Newtonsoft Json Serialize Name

  1. Newtonsoft Json Serialize Namespace
  2. Newtonsoft Json Serialize To Stream
  3. Newtonsoft Json Serialize Enum Name
  4. Newtonsoft Json Serialize To File
  • Use JSON to serialize and deserialize objects in C#. The fields within the class are marked with the DataMember attribute so the serializer knows to serialize them. The last part of the class is a ToString method that simply returns a textual representation of the object's values. The following code shows the Customer class.
  • Serializer.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter); and it will work for every enum it sees during that serialization (suggested by Travis). Or JsonConverter (suggested by banana): JsonConvert.SerializeObject(MyObject, new Newtonsoft.Json.Converters.StringEnumConverter).
  • Configure NamingStrategy property name serialization JsonPropertyAttribute name This sample uses JsonPropertyAttribute to change the names of properties when they are serialized to JSON.
  • C# (CSharp) Newtonsoft.Json.Serialization JsonProperty - 30 examples found. These are the top rated real world C# (CSharp) examples of Newtonsoft.Json.Serialization.JsonProperty extracted from open source projects. You can rate examples to help us improve the quality of examples.

This sample serializes an object to JSON. Json.NET Documentation. Json.NET Documentation. Serializing JSON. Serialize an Object. Serialize a Collection. Serialize a Dictionary. Serialize JSON to a file. Serialize with JsonConverters. Configure NamingStrategy property name serialization.

Active6 days ago

I have a class that contains an enum property, and upon serializing the object using JavaScriptSerializer, my json result contains the integer value of the enumeration rather than its string 'name'. Is there a way to get the enum as a string in my json without having to create a custom JavaScriptConverter? Perhaps there's an attribute that I could decorate the enum definition, or object property, with?

As an example:

Desired json result:

Ideally looking for answer with built-in .NET framework classes, if not possible alternatives (like Json.net) are welcome.

Alexei Levenkov
87.9k9 gold badges96 silver badges143 bronze badges
Omer BokhariOmer Bokhari
34.8k11 gold badges38 silver badges54 bronze badges

24 Answers

No there is no special attribute you can use. JavaScriptSerializer serializes enums to their numeric values and not their string representation. You would need to use custom serialization to serialize the enum as its name instead of numeric value.

If you can use JSON.Net instead of JavaScriptSerializer than see answer on this question provided by OmerBakhari: JSON.net covers this use case (via the attribute [JsonConverter(typeof(StringEnumConverter))]) and many others not handled by the built in .net serializers. Here is a link comparing features and functionalities of the serializers.

Alexei Levenkov
87.9k9 gold badges96 silver badges143 bronze badges
Matt DearingMatt Dearing
7,8371 gold badge18 silver badges25 bronze badges

I have found that Json.NET provides the exact functionality I'm looking for with a StringEnumConverter attribute:

More details at available on StringEnumConverter documentation.

There are other places to configure this converter more globally:

  • enum itself if you want enum always be serialized/deserialized as string:

  • In case anyone wants to avoid attribute decoration, you can add the converter to your JsonSerializer (suggested by Bjørn Egil):

    and it will work for every enum it sees during that serialization (suggested by Travis).

  • or JsonConverter (suggested by banana):

Additionally you can control casing and whether numbers are still accepted by using StringEnumConverter(NamingStrategy, Boolean) constructor.

Alexei Levenkov
87.9k9 gold badges96 silver badges143 bronze badges
Omer BokhariOmer Bokhari
34.8k11 gold badges38 silver badges54 bronze badges

Add the below to your global.asax for JSON serialization of c# enum as string

IggyIggy
6,4403 gold badges27 silver badges20 bronze badges

@Iggy answer sets JSON serialization of c# enum as string only for ASP.NET (Web API and so).

But to make it work also with ad hoc serialization, add following to your start class (like Global.asax Application_Start)

More information on the Json.NET page

Additionally, to have your enum member to serialize/deserialize to/from specific text, use the

System.Runtime.Serialization.EnumMember

attribute, like this:

JuriJuri
2,5311 gold badge14 silver badges16 bronze badges

I wasn't able to change the source model like in the top answer (of @ob.), and I didn't want to register it globally like @Iggy. So I combined https://stackoverflow.com/a/2870420/237091 and @Iggy's https://stackoverflow.com/a/18152942/237091 to allow setting up the string enum converter on during the SerializeObject command itself:

Community
Scott StaffordScott Stafford
31.9k19 gold badges105 silver badges152 bronze badges

The combination of Omer Bokhari and uri 's answers is alsways my solution since the values that I want to provide is usually different from what I have in my enum specially that I would like to be able to change my enums if I need to.

So if anyone is interested, it is something like this:

Ashkan SirousAshkan Sirous
3,8593 gold badges29 silver badges47 bronze badges

This is easily done by adding a ScriptIgnore attribute to the Gender property, causing it to not be serialised, and adding a GenderString property which does get serialised:

Stephen KennedyStephen Kennedy
9,13014 gold badges59 silver badges79 bronze badges

This version of Stephen's answer doesn't change the name in the JSON:

Newtonsoft Json Serialize Namespace

Community
mheymanmheyman
GuCaGuCa

ASP.NET Core way:

st1st1

Here is a simple solution that serializes a server-side C# enum to JSON and uses the result to populate a client-side <select> element. This works for both simple enums and bitflag enums.

I have included the end-to-end solution because I think most people wanting to serialize a C# enum to JSON will also probably be using it to fill a <select> drop-down.

Here goes:

Example Enum

Jul 13, 2017  smart driver updater full crack 2019 latest version free zone. Smart Driver Updater FULL PACKET 2017 Version + Crack 100%. Top Free Driver Software Updaters For Any Windows Operating. Carambis Driver Updater is the easiest and fastest way to update all drivers on your PC. The program scans all connected devices, checks the database for updated drivers as well as missing drivers, more compatible and stable versions of drivers, which are suitable individually for your PC. Carambis driver updater torrent windows 10.

A complex enum that uses bitwise ORs to generate a permissions system. So you can't rely on the simple index [0,1,2.] for the integer value of the enum.

Server Side - C#

The code above uses the NancyFX framework to handle the Get request. It uses Nancy's Response.AsJson() helper method - but don't worry, you can use any standard JSON formatter as the enum has already been projected into a simple anonymous type ready for serialization.

Generated JSON

Client Side - CoffeeScript

HTML Before

HTML After

biofractalbiofractal
14k8 gold badges62 silver badges104 bronze badges

You can also add a converter to your JsonSerializer if you don't want to use JsonConverter attribute:

It will work for every enum it sees during that serialization.

Mariusz Jamro
21.6k19 gold badges87 silver badges125 bronze badges
JerryGoyalJerryGoyal
14k11 gold badges90 silver badges101 bronze badges

Newtonsoft Json Serialize To Stream

For ASP.Net core Just add the following to your Startup Class:

Yahya HusseinYahya Hussein
3,2307 gold badges29 silver badges65 bronze badges

You can create JsonSerializerSettings with the call to JsonConverter.SerializeObject as below:

Xdw file to pdf free. Portable Document Format. PDF is an electronic document format designed by Adobe Systems using some language features PostScript. The official program for viewing documents in this format, Adobe Reader. Most often, PDF-file is a combination of text with raster and vector graphics and text forms, scripts written in JavaScript and other types of. Aug 01, 2011  File Download: DocuWorks Viewer Light 7.2.1 - English. Filename dwvlt721enc.zip; Version 7.2.1; Date Aug 1, 2011; Size 5.3 MB; DocuWorks Viewer Light is a simple version of DocuWorks Viewer. DocuWorks Viewer Light is used for displaying or printing the contents of DocuWorks files. DocuWorks Viewer Light makes it possible to view DocuWorks.

Yang ZhangYang Zhang
3,2982 gold badges27 silver badges31 bronze badges
PeteGOPeteGO
3,6042 gold badges33 silver badges60 bronze badges

Noticed that there is no answer for serialization when there is a Description attribute.

Here is my implementation that supports the Description attribute.

Enum:

Usage:

Greg R TaylorGreg R Taylor

This is an old question but I thought I'd contribute just in case. In my projects I use separate models for any Json requests. A model would typically have same name as domain object with 'Json' prefix. Models are mapped using AutoMapper. By having the json model declare a string property that is an enum on domain class, AutoMapper will resolve to it's string presentation.

In case you are wondering, I need separate models for Json serialized classes because inbuilt serializer comes up with circular references otherwise.

Hope this helps someone.

Ales Potocnik HahoninaAles Potocnik Hahonina
2,1321 gold badge22 silver badges31 bronze badges

Just in case anybody finds the above insufficient, I ended up settling with this overload:

hngr18hngr18

You can actually use a JavaScriptConverter to accomplish this with the built-in JavaScriptSerializer. By converting your enum to a Uri you can encode it as a string.

I've described how to do this for dates but it can be used for enums as well. Custom DateTime JSON Format for .NET JavaScriptSerializer.

Sebastian MarkbågeSebastian Markbåge
3,2751 gold badge14 silver badges9 bronze badges

Not sure if this is still relevant but I had to write straight to a json file and I came up with the following piecing several stackoverflow answers together

It assures all my json keys are lowercase starting according to json 'rules'. Formats it cleanly indented and ignores nulls in the output. Aslo by adding a StringEnumConverter it prints enums with their string value.

Personally I find this the cleanest I could come up with, without having to dirty the model with annotations.

Newtonsoft Json Serialize Enum Name

usage:

kennykenny

I have put together all of the pieces of this solution using the Newtonsoft.Json library. It fixes the enum issue and also makes the error handling much better, and it works in IIS hosted services. It's quite a lot of code, so you can find it on GitHub here: https://github.com/jongrant/wcfjsonserializer/blob/master/NewtonsoftJsonFormatter.cs

You have to add some entries to your Web.config to get it to work, you can see an example file here:https://github.com/jongrant/wcfjsonserializer/blob/master/Web.config

Newtonsoft Json Serialize To File

Jon GrantJon Grant
10.4k2 gold badges32 silver badges54 bronze badges
Benjamin SwedloveBenjamin Swedlove

A slightly more future-proof option

Facing the same question, we determined that we needed a custom version of StringEnumConverter to make sure that our enum values could expand over time without breaking catastrophically on the deserializing side (see background below). Using the SafeEnumConverter below allows deserialization to finish even if the payload contains a value for the enum that does not have a named definition, closer to how int-to-enum conversion would work.

Usage:

or

Source:

Background

When we looked at using the StringEnumConverter, the problem we had is that we also needed passivity for cases when a new enum value was added, but not every client was immediately aware of the new value. In these cases, the StringEnumConverter packaged with Newtonsoft JSON throws a JsonSerializationException similar to 'Error converting value SomeString to type EnumType' and then the whole deserialization process fails. This was a deal breaker for us, because even if the client planned on ignoring/discarding the property value that it didn't understand, it still needed to be capable of deserializing the rest of the payload!

DustyDusty
2,8781 gold badge18 silver badges32 bronze badges
SlavaSlava

Not the answer you're looking for? Browse other questions tagged c#asp.netjsonenumsjavascriptserializer or ask your own question.