2016-11-03 3 views
0

C#에서 네이티브 목록으로 변환하는 등의 출력을 어떻게 읽을 수 있습니까? 텍스트 및 분할을 구문 분석하고 문자열 조작을하지 않고 는, 내가 ','내가 쉽게 바로 사용하여 문자열 분할을 사용할 수 있다는 것을 알고json text to C# dictionary

[ 
    "\/recordings\/series\/seasons\/432250", 
    "\/recordings\/series\/seasons\/263560" 
] 

난 그냥 숫자에 관심있는 쉬운 방법을 가지고 받아야합니다 지난 6 개 수치의 문자

또 다른 예 :이 경우

[ 
    "\/recordings\/series\/episodes\/428389", 
    "\/recordings\/series\/episodes\/428386", 
    "\/recordings\/movies\/airings\/434062", 
    "\/recordings\/series\/episodes\/430801" 
] 

가 <> 경로를 알고 흥미로운 일이 될 것이다 내가 역 직렬화하기 위해 사용하고 일반적인 JSON은 그 사전 사장님 작동하지 않습니다 es json strings

감사합니다.

+0

사용 json.net http://www.newtonsoft.com/json – urlreader

+0

내가 사용 newtonsoft.com JSON 클래스에 더 복잡한 JSON 텍스트를 구문 분석 할 수 ...하지만 그렇지 않은 \ 문자열 같은 사전을 좋아해요 – AMoraes

+0

'List '또는'string []'으로 구문 분석을 시도 했습니까? – binki

답변

0

많은 사람들이 Json.NET/Newtonsoft.Json 라이브러리를 사용하고 싶어합니다. 당신은 쉽게 다음과 같이 사용하고 프로젝트에 NuGet 패키지로 추가 할 수 있습니다 : 숫자에 대한

var json = "[\"/recordings/series/seasons/432250\",\"/recordings/series/seasons/263560\"]"; 

var list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(json); 

를, 그것에 대해 이동하는 방법은 많이 있습니다. 다음 중 하나가 있습니다.

var numbersList = list.Select(x => x.Split('/').Last()).ToList(); 
+0

프로젝트에 Json.NET을 추가하는 방법을 확신 할 수 없을 때를 대비해이 질문은 다룰 수있다 : http : //stackoverflow.com/questions/4444903/how-to-install-json-net-using-nuget – UtopiaLtd

+0

모든 대답은 문제를 해결하는 것 같지만 코드 한 줄 정도이므로이 코드를 먼저 테스트했습니다.) 내가 좋아하는 ... 내 필요에 대한 충분하고 예상대로 쉽게 고마워 – AMoraes

0

아래 코드를 사용해보십시오.

 var json = @"[ 
""\/recordings\/series\/episodes\/428389"", 
""\/recordings\/series\/episodes\/428386"", 
""\/recordings\/movies\/airings\/434062"", 
""\/recordings\/series\/episodes\/430801"" 
]"; 

     var jarray = JArray.Parse(json); 
     var list = from a in jarray 
      let val = a.Value<string>() 
      let rgroup = Regex.Match(val, @"[^0-9]*([0-9]+)") 
      let vstring = rgroup.Groups[1] 
      select int.Parse(vstring.Value); 

그것은

은 Newtonsoft.Json 라이브러리를 필요로하고, listIEnumerable<int>의 유형이 있습니다. 추가하는 것을 잊지 마세요.

using System; 
using System.Linq; 
using System.Text.RegularExpressions; 
using Newtonsoft.Json.Linq; 

.cs 파일의 맨 위에 추가하십시오.

+0

고마워 ... 대단히 감사한다. – AMoraes

0

간단한 방법은 JavaScriptSerializer from System.Web.Extensions.dll입니다. 그것의 Deserialize<T>() 메소드를 사용하면 JSON을 역 직렬화해야하는 유형을 지정할 수 있습니다. 문자열 배열과 같은 단순한 프리미티브의 경우에는 마술 같은 일없이 마술처럼 작동합니다. 예 :

var json = "[\"\\/recordings\\/series\\/seasons\\/432250\",\"\\/recordings\\/series\\/seasons\\/263560\"]"; 
var stringArray = new JavaScriptSerializer().Deserialize<string[]>(json); 
foreach (var element in stringArray) 
    Console.WriteLine(element.Split('/').Last()); 
+0

내 프로그래밍 기술은 파스칼, VB 및 C# 및 Windows 양식에 대한 대부분의 오래된 있습니다. 지금 막 웹 프로그래밍 및 보이는 일부 사용을 찾고 있어요. Json처럼 매우 인기가 있습니다 ... 더 많이 배우게되어 기쁘다. 도움에 감사드립니다. – AMoraes