2016-06-20 5 views
0

'Newtonsoft.Json.JsonReaderException: Additional text encountered after finished reading JSON content: {. Path '', ...'에서 검색하면 잘못된 모든 Json으로 추적 된 3 가지 이상의 SO 질문을 찾습니다.유효한 Json에서 JObject.Parse가 오류를 throw합니다

나는에 3 개 가지 검증을 시도했다 :

[{"Imported": "This registration imported on: 06/20/2016"},{"ContactInfoUpdated": " Street Address2: Suite 222 to Shipping Address2: "}] 

와 세 개의 보고서는 유효한. 그리고 아직 런타임 오류 '... 추가 텍스트 발생'같은 그 토스 :

UPDATE dbo.[Order] SET UserComments = '[{"Imported": "This registration imported on: 06/20/2016"},{"ContactInfoUpdated": " Street Address2: Suite 222 to Shipping Address2: "}]' WHERE idOrder =121050 
+2

당신의 JSON *은 유효하지만 * 단일 객체가 아닌 두 객체의 배열을 나타냅니다. 결과적으로,'JObject.Parse'는 그것을 파싱하는 데 사용할 수 없습니다. 대신에'JArray.Parse' 또는'JToken.Parse'를 사용해보십시오. 코드를 조정해야 할 가능성이 높습니다. "CarbonCopy"라는 값이 포함 된 단일 객체를 기대하고있는 것처럼 보이지만 두 객체가 있고 둘 중 어느 속성도 가지고 있지 않습니다. 당신의 질문에서 당신이 정말로 여기에서하려고하는 것이 분명하지 않습니다. –

+0

그냥 그 오류를 피하려고 정말로 - 다시 방향을 주셔서 감사합니다. – justSteve

답변

0

:

if (!string.IsNullOrWhiteSpace(UserComments)) 
{ 
    JToken addresses; 
    addresses = JObject.Parse(UserComments).GetValue("CarbonCopy"); //errors here 
    if (!ReferenceEquals(null, addresses)) 
    { 
     //stuff 
    } 
} 

은 JSON이 닫힌 후 의도하지 않은 문자가 여기에 SQL이야,가 없음을 설정하려면 브라이언의 자극 덕분으로 나는 매우 도움이 될이 게시물을 발견 :

Get Value from JSON using JArray

내 json은 그것이 다른 객체의 배열이라는 점에서 다소 특이합니다. 대신 이름가 일정하게 유지 이름/값 쌍의 일련의, 내 'UserComments'필드 이름는 '을 ProfileWasEdited'이 될 수있는 쌍을 포함, '피드백' '를 CCRequested'등 .

var fields = JToken.Parse(UserComments); 
var isCC = ""; 
foreach (JObject content in fields.Children<JObject>()) 
{ 
    foreach (JProperty prop in content.Properties()) 
    { 
     if (prop.Name == "CarbonCopy") 
     isCC = prop.Value.ToString(); 
    } 
} 

ReSharper에서 나는 위를 Linq에이-이지는 할 수있는 날을 알려 : 나는 이름 특성에 대해 테스트 할 필요가 구조의 유형 수용하기 위해

foreach (JProperty prop in fields.Children<JObject>().SelectMany(content => content.Properties().Where(prop => prop.Name == "CarbonCopy"))) 
{ 
    isCC = prop.Value.ToString(); 
} 
관련 문제