如何使用Newtonsoft将含brand_id的JSON字符串转换为数字数组
使用Newtonsoft.Json将带brand_id的JSON数组转换为纯数字数组
没问题,这事儿用Newtonsoft.Json(也就是大家常说的Json.NET)处理起来很顺手,我给你两种实用的实现方式,你可以根据自己的代码场景来选:
方法一:通过反序列化到实体类实现
这种方式适合你需要多次复用这个结构的场景,先定义一个对应JSON结构的实体类,再通过LINQ提取转换:
// 定义与JSON结构匹配的实体类 public class BrandItem { public string brand_id { get; set; } } // 具体转换代码 string inputJson = "[{\"brand_id\":\"112\"},{\"brand_id\":\"114\"},{\"brand_id\":\"14\"}]"; // 1. 反序列化JSON字符串为实体列表 var brandList = JsonConvert.DeserializeObject<List<BrandItem>>(inputJson); // 2. 提取brand_id并转换为int数组 int[] numericArray = brandList.Select(item => int.Parse(item.brand_id)).ToArray();
方法二:直接使用JArray解析(无需定义实体类)
如果只是临时处理这个JSON,不想额外定义类的话,可以直接用Newtonsoft的JArray来操作,更灵活:
string inputJson = "[{\"brand_id\":\"112\"},{\"brand_id\":\"114\"},{\"brand_id\":\"14\"}]"; // 1. 解析JSON为JArray JArray brandJArray = JArray.Parse(inputJson); // 2. 遍历JArray提取并转换值 int[] numericArray = brandJArray .Select(jObj => int.Parse(jObj["brand_id"].ToString())) .ToArray();
额外提示:处理可能的转换异常
如果你的输入JSON里可能存在非数字的brand_id,直接用int.Parse会抛出异常,建议用int.TryParse做安全处理,比如过滤掉无效值:
// 方法一的安全版本 int[] safeNumericArray = brandList .Where(item => int.TryParse(item.brand_id, out _)) // 过滤掉无法转换的项 .Select(item => int.Parse(item.brand_id)) .ToArray(); // 方法二的安全版本 int[] safeNumericArray = brandJArray .Where(jObj => int.TryParse(jObj["brand_id"].ToString(), out _)) .Select(jObj => int.Parse(jObj["brand_id"].ToString())) .ToArray();
这样就能得到你想要的[112,114,14]格式的纯数字数组啦。
内容的提问来源于stack exchange,提问作者ROSHITH
相关产品推荐
相关产品推荐

