如何使用C#正确拆分字符串数组

时间:2016-02-28 13:46:10

标签: c# php json json.net

我有一个简单的php脚本,它使用后端的json_encode方法输出一个字符串数组。它输出如下:

complie 'org.jopendocument:jOpenDocument:1.3b1'

现在,我想用我的C#代码解析它,但我似乎无法正确解析它。

以下是我的C#代码:

["8090123","8090456","8090789","8090321","8090654"]

代码运行得很好,但它会输出以下结果using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication5 { class Program { static void Main(string[] args) { using (WebClient wc = new WebClient()) { string myString = wc.DownloadString("https://magforex.biz/list.php"); string[] words = myString.Split(','); for (var i = 0; i < words.Length; i++) { // i just hardcoded the index for now Console.WriteLine(words[0]); break; } Console.ReadLine(); } } } } ,这不是我想要的。

很抱歉,因为我刚开始使用C#并且对此知之甚少。

我想要的只是字符串["8090123",以便稍后我可以进行比较。

感谢提前帮忙。

5 个答案:

答案 0 :(得分:5)

使用正确的 JSON解析库(如Newtonsoft.Json)将JSON字符串解析为静态类型的类模型:

string[] words = JsonConvert.DeserializeObject<string[]>(myString);

答案 1 :(得分:2)

你只是错过了一步:

string[] words = myString.Trim(new []{'[',']'}).Split(',');

老实说,除非你将JsonConvert用于更复杂的对象图,否则使用json解串器在这种情况下有点过分,恕我直言。

编辑:如果你不想要引号,你可以使用LINQ投影......

string[] words = myString.Trim(new []{'[',']'})
                     .Split(',')
                     .Select(s => s.Trim(new[]{'"'}).ToArray();

BTW,我对Json.NET非常熟悉,并且多年来一直是ServiceStack的人。但是,我偏向于更简单的解决方案,因为,Occam's Razor,对吧?

答案 2 :(得分:1)

为什么不做明显的事情并对您的JSON输入数据进行JSON解码?使用Newtonsoft.Json:

JsonConvert.DeserializeObject<string[]>(myString)

答案 3 :(得分:1)

如果您不想使用Newtonsoft库,可以使用JavaScriptSerializer将字符串转换为数组。添加using System.Web.Script.Serialization;然后:

string myString = wc.DownloadString("https://magforex.biz/list.php");
JavaScriptSerializer js = new JavaScriptSerializer();
string[] myArray = js.Deserialize<string[]>(myString);

答案 4 :(得分:0)

你应该把它改成单词[i]开始,然后我不确定你到底想要做什么。