2017-07-19 102 views
1

我得到的是這樣一個問題:如何獲取另一個字符串內的字符串之間的特定字符串?

{ 
    "animal_zone":[ 
    { 
     "id":0001 
    }, 
    { 
     "id":0002 
    } 
    ] 
} 

這是我從網站上下載(抱歉,我不能告訴鏈接)的API,我從文字的那一塊希望是隻得到類別和ID字符串,是否有可能這樣做,而不做正則表達式? (我真的很糟糕吧)

,我需要(字符串[]數組內)

輸出例如:

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); 
} 

該代碼得到我之間「‘animal_zone’的文字:」和「]」:

{ 
    "id":0001 
}, 
{ 
    "id":0002 
} 

但我仍然不知道如何讓0001和技術一起內一個字符串[]

或者有更好的方法從API網站獲取信息,而不是通過獲取所有文本和子字符串/將其一個一個地分割出來嗎?

請幫幫我。謝謝

+1

這是JSON,只需反序列化該響應。不需要RegEx或子字符串。 – jAC

+0

準備模型類並根據該類反序列化基於該類的JSON字符串,以便它可以讀取「id」屬性值。 –

+0

[將反序列化JSON轉換爲C#動態對象?](https://stackoverflow.com/questions/3142495/deserialize-json-into-c-sharp-dynamic-object) – jAC

回答

0

您應該創建類(使用json2sharp如果你不知道應該如何看類):

public class AnimalZone 
{ 
    public int id { get; set; } 
} 

,並使用JSON.NET

List<AnimalZone> idList= JsonConvert.DeserializeObject<List<AnimalZone>>(yourJson); 
+0

謝謝,JSON的東西解決了它:) man ..小時的子字符串..事實證明,這樣做有一個更好,更簡單,更快捷的方式 –

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())); 

這是一般的想法。

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來選擇區域

相關問題