zoukankan      html  css  js  c++  java
  • C#解析JSON字符串总结

    JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串。

    操作JSON通常有以下几种方式:

    1. 原始方式:按照JSON字符串自己来解析。  

    2. 通用方式【★★★★★】:这种方式是使用开源的类库Newtonsoft.Json(下载地址http://json.codeplex.com/)。下载后添加dll引用就能用。

    首先添加引用:using Newtonsoft.Json;

    新增:本地dll下载:Newtonsoft.Json.rar   引用:using Newtonsoft.Json;

    1.Json字符串普通格式解析(常用)

    1 string jsonText = "{"zone":"海淀","zone_en":"haidian"}";
    2 JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);
    3 string zone = jo["zone"].ToString();
    4 string zone_en = jo["zone_en"].ToString();

    其他写法:

    1. int retCode = -1;//返回码,0表示成功,其他表示失败 string returnMessage = string.Empty;//返回消息,对返回码的描述 string jsonStr = "{"RetCode":3,"ReturnMessage":"测试消息"}"; JavaScriptObject jsonObj = JavaScriptConvert.DeserializeObject<JavaScriptObject>(jsonStr); if (jsonObj != null) { if (jsonObj.ContainsKey("RetCode") && jsonObj["RetCode"] != null) { int.TryParse(jsonObj["RetCode"].ToString(), out retCode); } if (jsonObj.ContainsKey("ReturnMessage") && jsonObj["ReturnMessage"] != null) { returnMessage = jsonObj["ReturnMessage"].ToString(); } }

    解析Josn列表数据:

    public static JArray GetData2JArray(string url, string key)
    {
        string jsonData = HttpHelper.HttpGet(url, "", "gb2312"); 
        JObject obj = JObject.Parse(jsonData);
        return (JArray)obj[key];
    }

    转换json格式为C#类

    1.Json字符串嵌套格式解析

    string jsonText = "{"beijing":{"zone":"海淀","zone_en":"haidian"}}";
    JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);
    string zone = jo["beijing"]["zone"].ToString();
    string zone_en = jo["beijing"]["zone_en"].ToString();

    2.Json字符串数组格式解析

    string jsonArrayText = "[{'a':'a1','b':'b1'},{'a':'a2','b':'b2'}]"; //"[{'a':'a1','b':'b1'}]即使只有一个元素,也需要加上[]
    string jsonArrayText = "[{"a":"a1","b":"b1"},{"a":"a2","b":"b2"}]";  //上面写法和此写法效果一样
    JArray jArray = (JArray)JsonConvert.DeserializeObject(jsonArrayText);//jsonArrayText必须是带[]数组格式字符串
    string str = jArray[0]["a"].ToString();

    3.内置方式:使用.NET Framework 3.5/4.0中提供的System.Web.Script.Serialization命名空间下的JavaScriptSerializer类进行对象的序列化与反序列化,很直接。

    1 Project p1 = new Project() { Input = "stone", Output = "gold" };
    2 JavaScriptSerializer serializer = new JavaScriptSerializer();
    3 string jsonStr = serializer.Serialize(p1);  //序列化:对象=>JSON字符串
    4 Response.Write(jsonStr);
    5 
    6 Project p2 = serializer.Deserialize<Project>(jsonStr); //反序列化:JSON字符串=>对象
    7 Response.Write(p1.Input + "=>" + p2.Output);
  • 相关阅读:
    【python+selenium】selenium grid(分布式)
    【python】导入自定义模块
    Maven的配置以及IDEA导入本地Maven
    java历史概述
    JVM 内存调优 与 实际案例
    ConcurrentHashMap实现线程安全的原理
    Request.UrlReferrer详解
    等比例缩放生成缩略图
    JavaEE的ajax入门
    javaee三层架构案例--简单学生管理系统
  • 原文地址:https://www.cnblogs.com/cxdanger/p/8714966.html
Copyright © 2011-2022 走看看