7
JObject.Parse (jsonString)가 부울 데이터에 문제를 일으키고 있습니다. 예 : json으로는 다음과 같습니다Json.Net 부울 구문 분석 문제
JObject data = JObject.Parse(str1);
foreach (var x in data)
{
string name = x.Key;
Console.Write(name + " (");
JToken value = x.Value;
Console.Write(value.Type + ")\n");
Console.WriteLine(value);
}
이 인쇄를 같은 값 : BoolParam (부울) : 진정한
사례 감도 원인을
{
"BoolParam": true
}
내가 구문 분석하려면 다음 코드를 사용 이 json을 나중에 사용하기 위해 저장하면 문제가 발생합니다. 내가 나중에 사용할 때 그러나 JObject.Parse (캐릭터가) 오류가 발생
{
"BoolParam": True
}
처럼 저장된 JSON 보이는 잘못된 JSON과 같은 : 가치 분석하는 동안 예기치 않은 문자가 발생했습니다 T. 경로 'BoolParam', 2 호선, 위치 15.
"True"에서 "true"로 대소 문자를 변경하면 작동합니다. 절약 할 때 사례를 변경하기 위해이 해킹을 추가하고 싶지 않지만이 시나리오를 처리하는 더 좋은 방법이 있습니다.
유효한 json을 저장해야한다는 것을 이해합니다. 문제를 일으키는 것은 내가 "True"로 값을 얻었지만 유효한 Json 문자열은 "true"를 기대할 때입니다. 따라서 "true"로 구문 분석하는 방법이 궁금합니다. – surya
@surya JSON에 'True'가 포함되어 있으면 유효한 JSON이 아닙니다. 그것은 그렇게 간단합니다. 'true' 토큰은 모두 소문자 여야합니다 (MUST). [JSON 사양] 섹션 2.1 (http://www.ietf.org/rfc/rfc4627.txt?number=4627)을 참조하십시오. Darin이 말했듯이 파서가 올바르게 읽을 수 있도록 JSON을 저장하는 방법을 수정해야합니다. –
수정 프로그램을 추가했지만 이전에 설명하지 못했습니다. 그 사람은 부울 값을 "True"로 변경하지만 Json.net 파서는 변경하지 않았습니다. 구체적으로이 라인은 부울 값에 "참"을 반환합니다. JToken value = x.Value; string val = (value.ToString()); json은 { "Bool": "true"} – surya