我有一个简单的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"
,以便稍后我可以进行比较。
感谢提前帮忙。
答案 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]开始,然后我不确定你到底想要做什么。