현재 역 직렬화하려는 잘못된 Json이있는 상황을 해결하기 위해 노력하고 있습니다. 클린치 포인트는 재산 할당이 :
문자 대신에 =
으로 선언 된 곳에 Json이 공급된다는 것입니다.잘못된 마크 업으로 Json을 역 직렬화
예 JSON :
{
"Field1" = "Hello",
"Field2" = "Stuff",
"Field3" = "I am non-Json Json, fear me",
"Field4" = 8
}
누군가가 =
대신 봤는데 :
의 사용에 C 번호에 관한 구조의 객체로이 역 직렬화하는 Json.Net를 사용하는 행운이 있었다 =
과거 읽어 JsonConverter
를 작성하려고하지만 항상 대신 :
의 =
을 얻고 메시지와 함께 예외가 발생있어 불만 '예상'을 '만 가지고 :. = 경로' ' ".
나는 내 자신의 직렬화 프로세스를 작성하고 Json.Net 라이브러리를 사용하지 않는 것을 제외하고 지난 어떤 방식으로 표시되지 않습니다. 이는 유효한 JSON 인에 가까운 뭔가 짜증 (그러나 나는 그것이 무효로 충분히 공평 가정) reader.ReadAsString();
는이 Field1
을 읽어야 칠 때
하지만, 분명히 그것은 :
아직 친구를 충족하지 않은 등 진행 "도대체 여기서 뭐하는거야?!"라고 말하면서 넘어지게된다. 실제로 표시 할 내용이 많지 않으므로 어떤 JsonConverter
구현 예제도 없습니다. 그냥 "읽기 ..."방법 중 하나를 사용하려고 시도하고 그렇게하지 못했습니다.
속성 할당이 a : 문자 대신 =로 선언되면 JSON이 아닙니다. 기간. 만약 객체의 값에'='가 없으면'String.Replace ("=", ":")'를 수행 한 다음 구문 분석을 시도하십시오 – Nkosi
이 파일의 공급자에게 선미를 제공하십시오 표준에 대해 이야기하고 json을 사용할 계획이라면 올바르게 구현해야합니까? 왜 당신은 노력을해야 할 것인가? 공급 업체가 잘못된 포맷을 발송할 때 (비록 @Nkosi 응답이 더 쉬운 것 같지만 실제로 전달 된 경우에 "예기치 않은"결과를 줄 수도있다. 문자열 내용 (문자열 값 자체를 바꾸는 것은 또한 anoying 일 수 있습니다. nl, 의도적으로 무엇을합니까 : 부호)) – Icepickle
'String.Replace'보다 약간 더 안전한 옵션을 원한다면 정규 표현식을 만들 수 있습니다 그것은 데이터의 "="내부가 변환되지 않았 음을 보장합니다. 그러나 @Icepickle에 동의하고 공급자에게 이야기하고 그들의 허위 사실을 고치라고 말합니다. –