✅ How to specify camel case for all response properties with Newtonsoft

This is the type of JSON I receive from an external API:
"phoneValidation": {
"success": true,
"data": {
"number": "27101238765",
"valid": true,
"account_details": {
"google": {
"registered": false,
"full_name": null
},
"twitter": {
"registered": true
},
"skype": {
"registered": false,
"age": null,
"city": null,
},
"whatsapp": {
"registered": true,
"last_active": null
},
"telegram": {
"registered": null,
"photo": null,
},
"phoneValidation": {
"success": true,
"data": {
"number": "27101238765",
"valid": true,
"account_details": {
"google": {
"registered": false,
"full_name": null
},
"twitter": {
"registered": true
},
"skype": {
"registered": false,
"age": null,
"city": null,
},
"whatsapp": {
"registered": true,
"last_active": null
},
"telegram": {
"registered": null,
"photo": null,
},
This I deserialize into this DTO:
public class ValidatePhoneNumberReceived
{
public bool Success { get; set; }
public ValidatePhoneNumberData Data { get; set; }

public class ValidatePhoneNumberData
{
public string Number { get; set; }
public Dictionary<string, object> AccountDetails { get; set; }
}
}
public class ValidatePhoneNumberReceived
{
public bool Success { get; set; }
public ValidatePhoneNumberData Data { get; set; }

public class ValidatePhoneNumberData
{
public string Number { get; set; }
public Dictionary<string, object> AccountDetails { get; set; }
}
}
Then I do some stuff, and return the same model from my own API. AccountDetails contains object, because for each key, the external API returns a different set of properties, as we see in the json account_details.google, and account_details.whatsapp etc. They appear in my response with the same snake case I received them with. I have even tried adding an action filter to add a NewtonsoftJsonOutputFormatter set to camel case. How can I force the dynamic properties to be camel case?
3 Replies
RugabaRj
RugabaRj3w ago
c#
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;

var settings = new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver(),
Formatting = Formatting.Indented
};

var obj = new
{
FirstName = "John",
LastName = "Doe"
};

string json = JsonConvert.SerializeObject(obj, settings);
Console.WriteLine(json);
c#
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;

var settings = new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver(),
Formatting = Formatting.Indented
};

var obj = new
{
FirstName = "John",
LastName = "Doe"
};

string json = JsonConvert.SerializeObject(obj, settings);
Console.WriteLine(json);
Unknown User
Unknown User2w ago
Message Not Public
Sign In & Join Server To View
SleepWellPupper
Seconding the viability voncerns about converters: Notice that camelCase AND snake_case are being used.
Want results from more Discord servers?
Add your server