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

  

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

string jsonText = "{\"zone\":\"北京\",\"zone_en\":\"haidian\"}";
JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);
string zone = jo["zone"].ToString();
string zone_en = jo["zone_en"].ToString();

  其他写法:

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的返回的数据:

{"Pictures":
[
{"PictureSrc":"http://i.ssimg.cn/ssupload/2016/10/17/707f464645f44b4cb9882b75d23ed8f9.png","PictureLink":"","PictureAlt":"通光线缆 36.50%","PictureTitle":"实盘赛冠军直播室","PictureTitleLink":"132","PictureSummary":"荷塘月色直播室是由野马和荷塘月色夫妻俩共同直播的直播室,野马以短线股为主,荷塘月色以中线股为主,擅于抓涨停板和翻倍牛股。","OrderTime":"2016-10-17 13:16:04"},
{"PictureSrc":"http://i.ssimg.cn/ssupload/2016/10/17/4c38b0a2604e49beaf1e4f7885e6a1a4.png","PictureLink":"","PictureAlt":"天际股份 6.38%","PictureTitle":"证券之星最强王牌播主","PictureTitleLink":"1716","PictureSummary":"深入股海数年,拥有十余年的实战经验。2014年证券之星播主年度冠军,各大一线网站著名博客,多次接受电视台专访。","OrderTime":"2016-10-17 13:12:34"}
]
}

  解析成自定义实体类列表:

#region 获取手编列表
/// <summary>
/// 获取手编列表
/// </summary>
/// <returns></returns>
public static List<Pictures> GetHandWriteList()
{
List<Pictures> list = new List<Pictures>();
var data = Common.LiveCastUserManageAPI.GetData2JArray(CmsApiSite, "Pictures");
if (data != null && data.Count > )
{
foreach (var item in data)
{
Pictures p = new Pictures();
if (!string.IsNullOrEmpty(item["PictureSrc"].ToString()))
{
p.PictureSrc = item["PictureSrc"].ToString();
}
list.Add(p);
}
}
return list;
}
#endregion
Pictures实体
 public class Pictures
{
/// <summary>
/// http://i.ssimg.cn/ssupload/2016/10/17/e6500633d4cb4a918c8f45e2c71ab8f6.jpg
/// </summary>
public string PictureSrc { get; set; }
/// <summary>
///
/// </summary>
public string PictureLink { get; set; }
/// <summary>
/// 中色股份 53%
/// </summary>
public string PictureAlt { get; set; }
/// <summary>
/// 四季度翻倍牛股在哪里?
/// </summary>
public string PictureTitle { get; set; }
/// <summary>
/// meihaoxiangwang
/// </summary>
public string PictureTitleLink { get; set; }
/// <summary>
/// 荷塘月色直播室是由野马和荷塘月色夫妻俩共同直播的直播室,野马以短线股为主, 荷塘月色以中线股为主,擅于抓涨停板和翻倍牛股。
/// </summary>
public string PictureSummary { get; set; } /// <summary>
/// 股票名称
/// </summary>
public string StockName { get; set; } /// <summary>
/// 股票收益率
/// </summary>
public string Rate { get; set; } /// <summary>
/// 昵称
/// </summary>
public string NickName { get; set; } /// <summary>
/// 头像
/// </summary>
public string HeadImg { get; set; } /// <summary>
/// 直播室名称
/// </summary>
public string CastRoomName { get; set; } }

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字符串普通格式解析(常用)

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

其他写法:

按 Ctrl+C 复制代码
按 Ctrl+C 复制代码

解析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的返回的数据:

按 Ctrl+C 复制代码
按 Ctrl+C 复制代码

解析成自定义实体类列表:

按 Ctrl+C 复制代码
按 Ctrl+C 复制代码
Pictures实体类的定义:
    public class Pictures
{
/// <summary>
/// http://i.ssimg.cn/ssupload/2016/10/17/e6500633d4cb4a918c8f45e2c71ab8f6.jpg
/// </summary>
public string PictureSrc { get; set; }
/// <summary>
///
/// </summary>
public string PictureLink { get; set; }
/// <summary>
/// 中色股份 53%
/// </summary>
public string PictureAlt { get; set; }
/// <summary>
/// 四季度翻倍牛股在哪里?
/// </summary>
public string PictureTitle { get; set; }
/// <summary>
/// meihaoxiangwang
/// </summary>
public string PictureTitleLink { get; set; }
/// <summary>
/// 荷塘月色直播室是由野马和荷塘月色夫妻俩共同直播的直播室,野马以短线股为主, 荷塘月色以中线股为主,擅于抓涨停板和翻倍牛股。
/// </summary>
public string PictureSummary { get; set; } /// <summary>
/// 股票名称
/// </summary>
public string StockName { get; set; } /// <summary>
/// 股票收益率
/// </summary>
public string Rate { get; set; } /// <summary>
/// 昵称
/// </summary>
public string NickName { get; set; } /// <summary>
/// 头像
/// </summary>
public string HeadImg { get; set; } /// <summary>
/// 直播室名称
/// </summary>
public string CastRoomName { get; set; } }

JSON生成实体类工具:点击>>

参考:序列化Json-Newtonsoft.Json

解析JsonArrayList

转换json格式为C#类

2.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();

3.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类进行对象的序列化与反序列化,很直接。
Project p1 = new Project() { Input = "stone", Output = "gold" };
JavaScriptSerializer serializer = new JavaScriptSerializer();
string jsonStr = serializer.Serialize(p1); //序列化:对象=>JSON字符串
Response.Write(jsonStr); Project p2 = serializer.Deserialize<Project>(jsonStr); //反序列化:JSON字符串=>对象
Response.Write(p1.Input + "=>" + p2.Output);
 

json数据转为对象,一般在前台把数据传回后端中使用 转https://www.cnblogs.com/zxtceq/p/6610214.html的更多相关文章

  1. 小程序json字符串转为对象

    小程序里json字符串转为对象使用JSON.parse()方法转变无效, 看报错提示有单引号“ ' ” 因为单引号而无效, 将单引号全改双引号即可. 报错如下: VM11050:1 thirdScri ...

  2. 用Newtonsoft将json串转为对象的方法(详解)

    首先,将json串转为一个JObject对象: JObject jo = (JObject)JsonConvert.DeserializeObject(CurrentSelectedItemReq) ...

  3. 【spring 后台跳转前台】使用ajax访问的后台,后台正常执行,返回数据,但是不能进入前台的ajax回调函数中

    问题: 使用ajax访问的后台,后台正常执行,并且正常返回数据,但是不能进入前台的ajax回调函数中 问题展示:  问题解决: 最后发现是因为后台的方法并未加注解:@ResponseBody,导致方法 ...

  4. 【springMVC 后台跳转前台】1.使用ajax访问的后台,后台正常执行,返回数据,但是不能进入前台的ajax回调函数中 ----2.前后台都没有报错,不能进入ajax回调函数

    问题1: 使用ajax访问的后台,后台正常执行,并且正常返回数据,但是不能进入前台的ajax回调函数中 问题展示:  问题解决: 最后发现是因为后台的方法并未加注解:@ResponseBody,导致方 ...

  5. C# -- 把json字符串转为对象并读取各属性的值

    前面2种方法是不需要声明一个Json字符串的类型即可把Json字符串转换为Dictionary对象 而第3种方法则是声明一个Json字符串的强类型对象,然后反序列化为该对象的数据. List<, ...

  6. 解决json字符串转为对象时LocalDateTime异常问题

    1 出现异常 这次的异常出现在前端向后端发送请求体里带了两个日期,在后端的实体类中,这两个日期的格式都是JDK8中的时间类LocalDateTime.默认情况下,LocalDateTime只能解析20 ...

  7. C# json字符串转为对象

    方法1: using System.Web.Script.Serialization; string ss = "{\"NewsCount\":\"3482\& ...

  8. JSON数据和对象

    在js中像数字类型.字符串类型.布尔类型这些都不能再被拆分,属于基本类型.与之相对有一种复杂类型:对象类型,它是本身由多个其他类型组合而成的. 创建对象有两种方法,一.new Object()创建一个 ...

  9. php json字符串转为数组或对象

    从网上查到的方法是 用get_object_vars 把类类型转换成数组 然后在用foreach  遍历即可 $array = get_object_vars($test); $json= '[{&q ...

随机推荐

  1. python 教程 第二十章、 数据库编程

    第二十章. 数据库编程 环境设置 1).安装MySQL-python http://www.lfd.uci.edu/~gohlke/pythonlibs/ MySQL-python-1.2.3.win ...

  2. word 软换行与硬换行

    word 下的软回车,就是按住 Shift+Enter 之后产生的一种效果,通常在文字后面会有一个向下的箭头: 硬回车就是只敲击回车(enter)产生的一种效果了,通常就会在文字后面产生一个向左弯区的 ...

  3. 怎么快速构建自己的C/C++程序?——有关编译、静态链接和SCons

    怎么快速构建自己的C/C++程序?--有关编译.静态链接和SCons 1. 写在前面 最初写C++是在Visual Studio这个IDE里,那时我并没有makefile的概念,对程序的编译和链接的一 ...

  4. qt翻译--QWaitCondition

    QWaitCondition Class Reference[QtCore module] 该类提供一个情况变量来同步线程. #include <QWaitCondition> 注意:该类 ...

  5. WPF特效-粒子动画

    原文:WPF特效-粒子动画 WPF实现泡泡龙小游戏效果.     /// -Ball to Ball Collision - Detection and Handling    /// http:// ...

  6. 在IOS开发中使用GoogleMaps SDK

    一.申请一个免费的API KEY要使用GoogleMaps SDK,必须要为你的应用申请一个API KEY,API Key可以让你监视你的应用调用api的情况.api key是免费的,你可以在任何调用 ...

  7. Microsoft Enterprise Library 5.0 系列(三)

    一.简介及用途 在实际的项目开发中,我们总会需要对数据进行验证,以保证数据的可靠性,而为了使这些验证可以在不同的地方进行复用(如winform.web.WPF等),就需要将验证进行封装,EntLib的 ...

  8. Winform 点击TreeView控件节点的CheckBox不触发NodeMouseClick事件的做法

    private void Tv_areainfo_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { if (!e.Node. ...

  9. 零元学Expression Blend 4 - Chapter 15 用实例了解互动控制项「Button」I

    原文:零元学Expression Blend 4 - Chapter 15 用实例了解互动控制项「Button」I 本章将教大家如何更改Button的预设Template,以及如何在Button内设置 ...

  10. 零元学Expression Blend 4 - Chapter 9 用实例了解布局容器系列-「Canvas」

    原文:零元学Expression Blend 4 - Chapter 9 用实例了解布局容器系列-「Canvas」 本系列将教大家以实做案例认识Blend 4 的布局容器,此章介绍的布局容器是Blen ...