WCF 프로젝트 내에서 .Net serialization을 사용하여 다른 서비스에 대한 JSon 응답을 생성 할 때 나를 괴롭힌 하나의 불쾌한 json 버그가 발생했습니다. 그것은 온라인 검증 자에 따르면 완벽하게 합법적 인 JSon이지만 수신자는 그것을 삼키지 않을 것입니다.
내용의 순서가 중요하다는 것이 밝혀졌습니다. JSon 사양에 따르면 순서는 중요하지 않지만 분명히 다른 끝에있는 소비자는 맨 위에 특정 필드를 찾지 못했을 때 숨 막히지 않는 맞춤 구문 분석기를 사용했습니다. serializer는 내용을 알파벳 순서로 넣습니다.
필자는 serializer에 데이터 계약을 통해 명시적인 순서를 지정할 수 있음을 알게 될 때까지 약간의 시간을 보냈다. 문제 해결됨.
예 :
[DataMember(Order = 1)] //<-- thank Zod this exists!
public List<Foo> MyFoos { get; set; }
는 JSON 응답의 상단에 배열 'MyFoos'을 둔다.
참고 : 이렇게하는 경우 주문 번호가없는 데이터 멤버가 여전히 맨 위에 플로트되므로 각 데이터 멤버에게 주문을 제공해야합니다.