사전을 serialize/deserialize하려고하는데 문제는 compareer가 StringComparer.OrdinalIgnoreCase
인 사전을 만드는 것입니다. 분명히StringComparer로 JSON 사전 deserialize
Different
:
var dict = new Dictionary<string, Dictionary<string, string>>(StringComparer.OrdinalIgnoreCase);
dict["x"] = new Dictionary<string, string>();
dict["x"]["y"] = "something";
var serialized = JsonConvert.SerializeObject(dict);
var unSerialized = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, string>>>(serialized);
Console.WriteLine((dict.Comparer == unSerialized.Comparer ? "Same" : "Different"));
(.NET Fiddle - Try It)이 콘솔에 다음 밖으로
인쇄 : 여기
내가 겪고있어 문제의 코드입니다 JSON serializer는 사전을 만들 때 설정 한 Comparer를 직렬화하지 않지만 설정할 수 없다는 문제가 있습니다.Dictionary<TKey, TValue>.Comparer
이후의 사실 이후의 Comparer는 읽기 전용입니다.
나는 사용자 정의 JsonSerializerSetting
과 관련이 있다고 확신하지만 컬렉션 생성을 차단하고 다른 비교자를 사용하여 사전을 반환하는 방법을 알아낼 수 없습니다.
확인을 Ron,이 json을 다른 사이트로 보냈다고 가정 해보십시오. 이 사전을 구성하는 방법을 어떻게 알 수 있습니까? (동일한 json을 만들기 위해 사전없이 다른 방법을 사용할 수도 있습니다.) –
@ L.B이 응용 프로그램은 웹 기반이 아니며 XML을 통한 직렬화에 JSON을 사용하고 있습니다. 데이터는 외부 시스템에 의해 처리되지 않습니다. –
이것은 논리를 설명하기위한 예일뿐입니다. json의 수신자는 어떻게 작성했는지 알지 못합니다. 그것은 당신이 그것을 만드는데 사용했던 언어조차 모른다. 그래서 잘못된 가정을한다. –