欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#后台接受前台JSON字符串装换成字典集合处理

程序员文章站 2022-05-25 23:08:14
一直以来,我们都是在服务端查询出结果生成json字符串,供前端调用,那么我们能否把从前端接受的json字符串转换成字典集合,让后台处理呢? 比如从前端接收:{'size'...

一直以来,我们都是在服务端查询出结果生成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,将相应的值插入数据库,或做其他处理。