【发布时间】:2019-12-20 03:14:06
【问题描述】:
提取字符串的一部分是一个常见的问题,但这里是字符串内容,例如' "main\":{\"temp\": ' 是重复的:
string test = "{\"cod\":\"200\",\"message\":0,\"cnt\":40,\"list\":[{\"dt\":1576810800,\"main\":{\"temp\":288.19,\"feels_like\":284.44,\"temp_min\":288.19,\"temp_max\":291.53,\"{\"dt\":1576821600,\"main\":{ \"temp\":283.97,\"feels_like\":281.56,\"temp_min\":283.97,\"temp_max\":286.47,\"pressure\":1007,\"sea_level\":1007,\"grnd_level\":997,\"humidity\":93,\"temp_kf\":-2.5},\"weather\":[{\"id\":501,\"main\":\"Rain\",\"description\":\"moderate rai\",\"icon\":\"10d\"}],\"clouds\":{\"all\":90},\"wind\"";
使用
string s = test.Substring(test.IndexOf("\"main\":{\"temp\":") + 15);
我明白了
288.19,"feels_like":284.44,,"temp_min":288.19,"temp_max":291.53,"{"dt":157682160
0,"main":{ "temp":283.97,"feels_like":281.56,"temp_min":283.97,"temp_max":286.47
,"pressure":1007,"sea_level":1007,"grnd_level":997,"humidity":93,"temp_kf":-2.5}
,"weather":[{"id":501,"main":"Rain","description":"moderate rain","icon":"10d"}],
"clouds":{"all":90},"wind"
而不是
288.19
知道什么命令会有所帮助吗?应该是可以适应“temp_max”或“pressure”的东西。
干杯
【问题讨论】:
-
你是怎么得到那个字符串的?看起来 JSON 已损坏。如果它没有损坏,您可以使用 JSON 序列化程序,然后查询对象层次结构以获取您想要的“主临时”数组......但在它是有效的 JSON 之前,这是行不通的。
-
这听起来像an X Y problem。您能解释一下
test字符串的来源以及您要做什么吗?我们也许能够提供一个更好的解决方案,只需搜索一个字符串 -
我希望原始字符串是有效的 JSON,但在将其转换为 C# 时出现错误。
-
当使用
SubString()时,第一个参数是strart索引。您应该为所需的长度应用第二个参数。 -
Regex 始终是一个值得考虑的好选择。