2016-11-03 58 views
0

如何在C#中读取这样的输出,可能转换为C#本地列表? 没有分析文本和分裂,使字符串操作,必须有一个简单的方法json text to c#dictionary

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

我感兴趣的只是数字,我知道我可以很容易地只使用使用字符串分割“”并获得在过去的6个字符NUMERICS

另一个例子:

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

在这种情况下将是有趣知道<>路径,我使用反序列化 典型的JSON不会与这些字典LIK工作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

我的编程技巧是古老的pascal,VB和C#,主要是Windows窗体..只是现在我找到一些用于网络编程和外观像Json很受欢迎...很高兴了解更多..感谢您的帮助 – AMoraes