2016-07-29 3 views
1

안녕하세요,이 JSON 라인을 구문 분석하려고하지만 파일 에서이 같은 이유는 내가 왜 내가 자동화를 원하는 그래서 잘못된 라인을 읽을 수있는 유효한 JSON 파일을 제거 할 수 있습니다.Newtonsoft 객체를 String에 직렬화합니다. JObject 인스턴스가 필요합니다

{"item":"value"}{"anotheritem":"value"} 

어쨌든 거기

{"anotheritem":"value"} 

그래서 구문 분석을 시작 읽을 수있는 유효한 JSON으로의 전환을 제거 : 문제는 JSON이

예는 한 라인에서 여러 JSON이 포함되어 있다는 것입니다 파일 의

나는에서는 StreamReader 내가

그래서 나는 잘못된 JSON을 감지 할 수있어이 무효 JSON을 포함하는 여러 개의 파일을 가지고 있지만 어떤 이유로 내가 그것을 얻을 수없는 파일이 원인이 사용하고 시도 JSON을 읽어 그래서 내가 잘못된 라인

using (StreamReader r = new StreamReader(itemDir)) 
{ 
    string json = r.ReadToEnd(); 
    if (json.Contains("anotheritem")) 
    { 
     JObject NoGood = JObject.FromObject(json); 
     MessageBox.Show(NoGood.ToString()); 
    } 
} 

에게 오류를 제거하는 .remove를 사용할 수 있습니다

Object serialized to String. JObject instance expected. 

당신의 시간과 도움을 여러분 모두 감사합니다.

+0

귀하의 json은 문제가되는 것을 좁힐 수 있습니까? –

+0

@ LasseV.Karlsen 배열 래퍼 또는 구분 기호가없는 두 개의 별개의 개체가 있습니다. –

+0

항목 데이터를 제거하면 문제가 더 명확 해집니다. – Premt

답변

2

각 개체가 공백이나 다른 문자없이 나란히있는 경우 문자열을 json 배열로 변환 할 수 있습니다.

string value = "{\"item\":\"value\"}{\"anotheritem\":\"value\"}"; 
string arrayValue = "["+value.Replace("}{", "},{") + "]"; 
var array = JArray.Parse(arrayValue); 
var goopArray = array.OfType<JObject>().Where(o => o.Property("anotheritem") == null); 
+0

굉장한 아이디어지만 var 배열 = JArray.Parse (값); var 배열 = JArray.Parse (arrrayValue); 고맙습니다 :) – Premt

관련 문제