C# 将字符串解析为键值对C

C# 将字符串解析为键值对C,c#,json,asp.net-core,.net-core,C#,Json,Asp.net Core,.net Core,我有一个调用另一个API的方法。从 var activeCustomers=await response.Content.ReadAsStringAsync; 我得到包含[timestamp,value]对象的字符串: {值:[1298937600000,1],[1459468800000,16],[146206080000527],[146473200000173],[146733120000132],[1470009600000166],[14726880000151],[147528000

我有一个调用另一个API的方法。从

var activeCustomers=await response.Content.ReadAsStringAsync; 我得到包含[timestamp,value]对象的字符串:

{值:[1298937600000,1],[1459468800000,16],[146206080000527],[146473200000173],[146733120000132],[1470009600000166],[14726880000151],[147528000000172],[1477958400000139],[148055040000129],[148322880000116],[148590720000013],[149100480000227],[1493598680000281],[14996200000271],[14986720000230],[15015456000000326]、[15042240000000403]、[1506816000000442]、[1509494944000001019]、[1512086400000650]、[15147648000000708]、[15646176000002614]、[156729600002527]、[1569880000003144]、[157256640000003075]、[1575188400000241]、[15778380000246]、[15805200000246]、[158020800000085]。]

我想将这些值解析为键值对,但我不确定什么是最理想的方法

我尝试删除字符串的开头和结尾,并将其转换为对象,但它在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.NET轻松地反序列化

var result=JsonConvert.DeserializeObjectactiveCustomers; 或者System.Text.Json

var result=JsonSerializer.DeserializeactiveCustomers; 根在哪里

公共类根 { 公共长[][]值{get;set;} } 然后可以使用方法将values属性映射到任何所需的结构

var pairs=result.values.Selectv=>new{timestamp=v[0],value=v[1]}.ToList;
这是JSON。只需使用JSON-Deserializer。为什么不直接反序列化JSON。字符串由一个对象组成,该对象具有一个属性值,该属性值是一个数组数组。内部数组总是由一对数字组成,第一个是长的,第二个是整型的。@AlexeiLevenkov似乎链接的副本不正确。OP可以使用JSON deserialization@PavelAnikhouski谢谢-不知道为什么我会得到那个错误的副本。更新为更正日期。