Newtonsoft.Json을 사용하여 테스트 스테이션에서 생성 된 JSON 로그를 구문 분석하려고합니다. 테스트 프로세스로 인해 JSON 컨텐츠가 약간 손상 될 수 있으므로 손상된 데이터를 파싱 할 수 있어야합니다. 더 구체적으로 말하면 파서가 손상되거나 인식 할 수없는 문자를 발견하면 현재 줄을 건너 뛰고 다음 줄에서 구문 분석을 계속하고 싶습니다.Newtonsoft.Json/Json.Net에서 인식 할 수없는 문자를 파싱하는 방법은 무엇입니까?
나는 도서관을 탐험 중이며 아직 해결책을 찾지 못했다. 파서가 멈추는 스 니펫은 다음과 같습니다. 나는 파서와 독립적으로 스트림을 진행하는 것처럼 보이지 않는다.
- "키를": ""이중 인용 값 ","
- "키": "불완전 값 을
StringBuilder jsonBuffer = new StringBuilder();
jsonBuffer = "...";
StringReader sr = new StringReader(jsonBuffer.ToString());
JsonTextReader jr = new JsonTextReader(sr);
jr.SupportMultipleContent = true;
bool go = true;
while (go) {
try {
go = jr.Read();
} catch (Exception e) {
Console.Write("Oops! JSON Read Exception: ");
Console.WriteLine(e.Message);
// can't continue past here...
}
if (!go || jr.TokenType == JsonToken.Undefined) break;
if (jr.Value != null)
Console.WriteLine("Token: {0}, Value: {1}", jr.TokenType, jr.Value);
else
Console.WriteLine("Token: {0}", jr.TokenType);
}
손상의 유형의 몇 가지 예 I 건너 바라고 있어요
마지막 항목은 중첩 된 개체를 풀기 위해 좀 더 복잡한 논리를 취할 것임을 알고 있지만이 i 1과 2가 반드시 가져야하는 반면에 '좋은 것'이 더 많습니다.
도움을 주시면 감사하겠습니다. 존
이 손상의 모양을 보여줄 수 있습니까? – dbc
물론 게시물에 몇 가지 예를 추가했습니다. –
내용이 줄 바꿈되었다고 가정하면 (JsonTextReader에 의존하는 대신) 구문 분석 외부에서 읽는 내용을 이동하십시오. 기본적으로 : Open File, Read Line, Json.net과 Parse를 계속 진행하십시오. –