【发布时间】:2020-07-07 19:43:34
【问题描述】:
我有调用另一个 API 的方法。来自
var activeCustomers = await response.Content.ReadAsStringAsync();
我得到包含 [timestamp, value] 对象的字符串:
{"values":[[1298937600000,1],[1459468800000,16],[1462060800000,527],[1464739200000,173],[1467331200000,132],[1470009600000,166],[1472688000000,151],[1475280000000,172],[1477958400000,139],[1480550400000,129],[1483228800000,116],[1485907200000,133],[1488326400000,180],[1491004800000,227],[1493596800000,281],[1496275200000,263],[1498867200000,230],[1501545600000,326],[1504224000000,403],[1506816000000,442],[1509494400000,1019],[1512086400000,650],[1514764800000,708],[1564617600000,2614],[1567296000000,2527],[1569888000000,3144],[1572566400000,3075],[1575158400000,2541],[1577836800000,2246],[1580515200000,2456],[1583020800000,885]]}
我想将这些值解析为键值对,但我不确定什么是最优化的方法。
我尝试删除字符串的开头和结尾并将其转换为对象,但它在 ienumerable 中仍然是一个大字符串:
int index = activeCustomers.IndexOf(":");
if (index > 0)
activeCustomers = activeCustomers.Substring(index + 1);
activeCustomers = activeCustomers.Remove(activeCustomers.Length - 1);
var results = ((IEnumerable) activeCustomers).Cast<object>();
我也尝试为此制作正则表达式,但我对此不太满意。
【问题讨论】:
-
它是 JSON。只需使用 JSON 反序列化器。
-
为什么不直接反序列化 JSON。您的字符串由一个具有单个属性“值”的对象组成,该属性是一个数组数组。内部数组总是由一对数字组成(第一个是 long,第二个是 int)。
-
@AlexeiLevenkov 似乎,链接的副本不正确。 OP 可以使用 JSON 反序列化
-
@PavelAnikhouski 谢谢 - 不知道为什么我会得到那个错误的副本。更新以更正。
标签: c# json asp.net-core .net-core