一直以來,我們都是在服務端查詢出結果生成JSON字符串,供前端調用,那么我們能否把從前端接受的JSON字符串轉換成字典集合,讓后臺處理呢?
比如從前端接收:{'size':'10', 'weight':'10kg'}
在服務端轉換成:[{size:"10"},{weight:"10kg"}]這樣的字典集合
通過Newtonsoft的DeserializeObject<Dictionary<string, string>>方法可以把JSON字符串反序列化成字典集合。
假設有這樣的一個Model(實體)
using Newtonsoft.Json;using Newtonsoft.Json.Linq;public class Product{ public string ProductDetails { get; set; } public Dictionary<string, string> ProductDetailList { get { if (string.IsNullOrWhiteSpace(ProductDetails)) { return new Dictionary<string, string>(); } try { var obj = JToken.Parse(ProductDetails); } catch (Exception) { throw new FormatException("ProductDetails不符合json格式."); } return JsonConvert.DeserializeObject<Dictionary<string, string>>(ProductDetails); } }}
以上,通過JToken.Parse判斷JSON字符串是否可以被轉換,如果不行就拋異常。通過JsonConvert.DeserializeObject<Dictionary<string, string>>(ProductDetails)反序列化成字典集合。
public void Main(string[] args){ var product = new Product(); product.ProductDetails = "{'size':'10', 'weight':'10kg'}"; foreach(var item in product.ProductDetailList) { Console.WriteLine(item.Key + " " + item.Value); } Console.Read();}
創建Product實體,給product.ProductDetails屬性賦值,程序會自動完成轉換,這樣我們就可以遍歷product.ProductDetailList,將相應的值插入數據庫,或做其他處理。
新聞熱點
疑難解答