我遇到了类似这样的问题:
{
"animal_zone":[
{
"id":0001
},
{
"id":0002
}
]
}
这是我从网站获得的API(抱歉,我无法告诉链接),我想从那块文本中获取的只是获取类别和id字符串,是否可以做到所以不用正则表达式? (我真的很糟糕)
我需要的输出示例(在string []数组中):
animal_zone
0001
0002
我尝试过:
private void MClient_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e){
string webResult = Encoding.UTF8.GetString(e.Result);
int goFrom = webResult.IndexOf("\"animal_zone\": [") + "\"animal_zone\": [".Length;
int goTo = webResult.IndexOf("]");
string pveResult = webResult.Substring(goFrom, goTo - goFrom);
}
该代码为我提供了#34;之间的文字。 " animal_zone":"和" ]":
{
"id":0001
},
{
"id":0002
}
但我仍然不知道如何将0001和0002放在一个字符串数组[]
中或者有没有更好的方法从API网站获取信息而不是通过逐个获取所有文本和子串/拆分来实现?
请帮帮我。谢谢
答案 0 :(得分:0)
您应该创建课程(如果您不知道应该如何上课,请使用json2sharp):
public class AnimalZone
{
public int id { get; set; }
}
并使用JSON.NET
List<AnimalZone> idList= JsonConvert.DeserializeObject<List<AnimalZone>>(yourJson);
答案 1 :(得分:0)
这是常见的东西,只需使用库。顺便说一下,这种格式称为JSON。 http://www.newtonsoft.com/json
您要做的是创建一个本地c#类,您可以使用它来将其映射到:
public class AnimalStuff
{
public List<Ids> animal_zone { get; set; }
}
public class Ids
{
public int Id { get; set; }
}
我的意思是,该示例位于页面顶部,但无论如何:
AnimalStuff animalstuff = JsonConvert.DeserializeObject<AnimalStuff>(yourJsonString);
string[] answer = { "animal_zone" };
answer.Concat(animalstuff.animal_zone.Select(a=>a.ToString()));
这是一般的想法。
答案 2 :(得分:0)
这是一个完全正常工作的代码示例
POCO
public class AnimalZone
{
public int id { get; set; }
}
public class AnimalZones
{
public List<AnimalZone> animal_zone { get; set; }
}
如何反序列化
var animals= JsonConvert.DeserializeObject<AnimalZones>(txt);
然后使用LINQ选择您的区域