如何将BookShops的BookID单行转换为List<int>类型的GlobalBookIDs?
单行代码实现BookID转换为List类型的GlobalBookIDs?
原始JSON数据
"BookShops": [ { "Name": "Modern", "BookID": [ "101" ] }, { "Name": "Windshore", "BookID": [ "102" ] }, { "Name": "Winter", "BookID": [ "105" ] } ]
转换需求
每个BookShops元素的BookID是仅含单个字符串的数组,需将这些BookID转换为List<int>类型的GlobalBookIDs,预期结果如下:
"GlobalBookID":[101,102,105]
对应的类定义:
List<int> GlobalBookIDs
回答
完全可以用单行代码实现,以C#为例,结合LINQ就能完成:
场景1:已将JSON反序列化为实体对象
假设反序列化后的数据对象为data,其中包含BookShops集合属性:
var GlobalBookIDs = data.BookShops.Select(shop => int.Parse(shop.BookID.First())).ToList();
场景2:直接处理JSON字符串(使用Newtonsoft.Json)
无需提前反序列化为实体,直接解析JSON字符串完成转换:
var GlobalBookIDs = JObject.Parse(jsonString)["BookShops"].Select(shop => int.Parse(shop["BookID"][0].ToString())).ToList();
代码逻辑说明:通过LINQ遍历每个书店条目,取出BookID数组的第一个元素,将字符串类型的ID转换为int,最后将所有结果收集为List<int>,完全匹配需求。
内容的提问来源于stack exchange,提问作者Carrie Kaski
相关产品推荐
相关产品推荐

