zoukankan      html  css  js  c++  java
  • JDynamic :支持Json反序列化为Dynamic对象

    2010年 .NET 4.0 发布前后,从3.5向4.0迁移,那时也有一些异构系统的需求,主要是和PHP打交道,通信使用的HTTP 格式为JSON。

    不过因为接口比较多,也没有统一规范,PHP端相对是制定接口的一方,所以.NET中反序列化时就显得被动了一些。

    当时看中了Dynamic方便使用的优势,并以ASP.NET MVC中 ViewBag->ViewData的转换为参考,制定了一些简单的测试用例,后期就是完善了这些测试用例,使之可以成为一个简单易用的工具类。

    最近整理了一下,把这个工具类放到了Codeplex上 http://jdynamic.codeplex.com/

    以下是一些测试用例:

    一、直接获取值

    dynamic json = new JDynamic("1");
    json.Value //这样就可以读到1

    二、JSON对象

    dynamic json = new JDynamic("{a:'abc'}");
    json.a 可以得到字符串 "abc"

    dynamic json = new JDynamic("{a:3.1416}");
    json.a 的值是 3.1416m

    dynamic json = new JDynamic("{a:1}");
    json.a 的值是 1

    三、集合

    dynamic json = new JDynamic("[1,2,3]");
    json.Length/json.Count 这两个属性是 3
    也可以使用下标来读取: json[0]/ json[2]

    dynamic json = new JDynamic("{a:[1,2,3]}");
    可以这样来读取 json.a[0]/ json.a[2] 


    dynamic json = new JDynamic("[{b:1},{c:1}]");
    可以这样来读取int的值  json[0].b/json[1].c

    四、嵌套JSON对象

    dynamic json = new JDynamic("{a:{a:1} }");
    json.a.a 可以读出值1.

  • 相关阅读:
    shell_02
    shell_practise
    Shell_01
    PythonDay_03
    PythonDay_02
    PythonDay_01
    面试题32:从上到下打印二叉树
    面试题 31 : 栈的压入、弹出序列
    面试题20 : 表示数值的字符串
    面试题29:顺时针打印矩阵
  • 原文地址:https://www.cnblogs.com/chsword/p/jdynamic_testcase.html
Copyright © 2011-2022 走看看