এটি করার কোনও বৈশিষ্ট্য নেই, তবে আপনি এটি সমাধানকারীকে কাস্টমাইজ করে এটি করতে পারেন।
আমি দেখতে পাচ্ছি যে আপনি ইতিমধ্যে একটি ব্যবহার করছেন CamelCasePropertyNamesContractResolver। যদি আপনি সে থেকে একটি নতুন সমাধানকারী শ্রেণি সংগ্রহ করেন এবং CreateDictionaryContract()পদ্ধতিটি ওভাররাইড করেন তবে আপনি একটি বিকল্প DictionaryKeyResolverফাংশন সরবরাহ করতে পারেন যা মূল নামগুলি পরিবর্তন করে না।
আপনার প্রয়োজনীয় কোডটি এখানে রয়েছে:
class CamelCaseExceptDictionaryKeysResolver : CamelCasePropertyNamesContractResolver
{
protected override JsonDictionaryContract CreateDictionaryContract(Type objectType)
{
JsonDictionaryContract contract = base.CreateDictionaryContract(objectType);
contract.DictionaryKeyResolver = propertyName => propertyName;
return contract;
}
}
ডেমো:
class Program
{
static void Main(string[] args)
{
Foo foo = new Foo
{
AnIntegerProperty = 42,
HTMLString = "<html></html>",
Dictionary = new Dictionary<string, string>
{
{ "WHIZbang", "1" },
{ "FOO", "2" },
{ "Bar", "3" },
}
};
JsonSerializerSettings settings = new JsonSerializerSettings
{
ContractResolver = new CamelCaseExceptDictionaryKeysResolver(),
Formatting = Formatting.Indented
};
string json = JsonConvert.SerializeObject(foo, settings);
Console.WriteLine(json);
}
}
class Foo
{
public int AnIntegerProperty { get; set; }
public string HTMLString { get; set; }
public Dictionary<string, string> Dictionary { get; set; }
}
উপরে থেকে আউটপুট এখানে। লক্ষ্য করুন যে শ্রেণীর সমস্ত সম্পত্তির নাম উট-কেসযুক্ত তবে অভিধান কীগুলি তাদের মূল আবরণ ধরে রেখেছে।
{
"anIntegerProperty": 42,
"htmlString": "<html></html>",
"dictionary": {
"WHIZbang": "1",
"FOO": "2",
"Bar": "3"
}
}