我做了一个请求并得到了回复,除了一个数字和单词组合外,文本都是一样的。我试图搜索每个响应不同的ID。有没有办法从该ID中找到值或字符串。
格式如下:
"prize_ids":["przhpctvsumtpckmnrh"]
完整回复= https://api.sliver.tv/v1/channel/usr0000000000000001/list_programs?number=20&need_raffles=true
只需知道我是如何做到这一点的。 Thanx提前
答案 0 :(得分:0)
您可以使用String.Replace
,例如:
string blah = "test123";
string id = blah.Replace("test", "");
这个给出了一些提示如何将json推入动态对象:
答案 1 :(得分:0)
收到回复后,将“prize_id”存储在变量中,然后转到
string.replace(“”,“”)
答案 2 :(得分:0)
您可以使用contains
来检查回复的有效性,并replace
从中获取ID。
//Returns true if the fulltext contains the mytext
public static bool FindMyString(string fullText, string myText)
{
return fullText.Contains(myText);
}
//Returns the id from the string
public static string GetDataFromString(string fullText, string myText)
{
return fullText.Replace(myText, "");
}
要查找请求的prize_id
,如果您知道prize_id有多少个字符,那么您可以使用
public static string FindPrizeId(string fullText, int countOfPrizeId)
{
return fullText.Substring(0,countOfPrizeId);
}
答案 3 :(得分:0)
您可以使用QuickType作为起点从JSON响应生成POCO,然后您可以使用它将JSON转换为可在C#中使用的对象。
解析JSON并尝试substring / replace / contains是一个脆弱的解决方案,它不会处理响应中与空格的任何差异(例如换行符,空格等)。
void Main()
{
var json = "Your JSON string here...";
var response = JsonConvert.DeserializeObject<Response>(json);
var allPrizeIds = response.Body.Where(b => b.PrizeIds != null)
.SelectMany(b => b.PrizeIds);
var matchingPrizes = allPrizeIds.Where(p => p == "przv3d75ezcrqf1xy6b");
allPrizeIds.Dump();
}
public class Response
{
[JsonProperty("body")]
public List<Body> Body { get; set; }
}
public class Body
{
[JsonProperty("prize_ids")]
public List<string> PrizeIds { get; set; }
}