C# 后台解析json,简单方法 字符串序列化为对象,取值
如果后台是一个JSON的字符串格式如下:
string str = "{\"Success\":true,\"Msg\":\"成功!\"}";
我们之间转成dynamic然后获取里面某个属性即可。
dynamic response = Newtonsoft.Json.JsonConvert.DeserializeObject(str);
string a = response.Success; string b = response.Msg;
还有两种较为复杂的方法:
Data data1 = JsonConvert.DeserializeObject<Data>(str);获取就直接:data1.Success。
或者:List<Data> list = JsonConvert.DeserializeObject<List<Data>>(str);获取需要循环获取:foreach (var item in list)
{
item.Success
}
但是以上2个方法都需要声明类
public class Data
{
public string Success { get; set; }
public string Msg { get; set; }
}
如果后台穿过来是一个Json(new { success = response.Success, msg = response.Msg }, JsonRequestBehavior.AllowGet);格式;直接转成dynamic 格式。获取: resulOb.Data.success。
--------------题外话
其实也可以用这种方式直接传给前台:
public JsonResult projectPush(){
Json(new { success = false, msg = "成功!" }, JsonRequestBehavior.AllowGet);
}
前台获取的时候直接:var result = Ext.decode(repsonse.responseText);result.success即可。当然这个是基于EXT的。你可以返回之后调适一下其他框架下的。
-------------------------------------------------------------------------------------------------------- 分割线 ------------------------------------------------------------------------------------------------------------------------------------------
Newtonsoft.Json在json和对象之间转化是一个非常强大的工具。
对象转化json字符串
Newtonsoft.Json.JsonConvert.SerializeObject()
json字符串转化为指定对象
Newtonsoft.Json.JsonConvert.DeserializeObject<>()
json字符串直接获取指定元素值(类似XML)
var jObject=JObject.Parse(jsonstring);
var time= jObject["time"].ToString();//获取time{"time":"2016-06-06 11:11:11"}
xml转换json字符串
XmlDocument doc = new XmlDocument();
doc.LoadXml(PostBackXml);
var jObject = Newtonsoft.Json.JsonConvert.SerializeXmlNode(doc);//Xml转json
当上面的XML在序列化是通常会出现根目录,根目录内出现的才是需要序列化的对象元素。
不妨先转换为JObject,像下面这样使用jobj["MongoTask"]转换
var json=JsonConvert.SerializeXmlNode(item);
var jobj = JsonConvert.DeserializeObject<JObject>(json);
tasklist.Add(jobj["MongoTask"].ToObject<MongoTask>());
如果需要获取XML中属性的值,比如获取<user name='张三'>获取张三时name属相带有@符号
代码中过滤到@符号就可以正常取值
var jobj = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(jObject.Replace("@",""));
var name= jobj["Response"]["Body"]["OrderResponse"]["name"];
小结:
1:直接解析字符串
var jObject=JObject.Parse(jsonstring);
var time= jObject["time"].ToString();//获取time{"time":"2016-06-06 11:11:11"}
2:通过转成dynamic然后获取里面某个属性即可。
dynamic response = Newtonsoft.Json.JsonConvert.DeserializeObject(str);
string a = response.Success; string b = response.Msg;
3:先构造一个对象,再将json字符串转型为对象,获取它的属性
================================================================================
1)使用JObject读写字符串:
JObject jo = JObject.Parse(jsonText);
string[] values = jo.Properties().Select(item => item.Value.ToString()).ToArray();
(2)使用JsonSerializer读写对象(基于JsonWriter与JsonReader):
数组型数据
string jsonArrayText1 = "[{'a':'a1','b':'b1'},{'a':'a2','b':'b2'}]";
JArray ja = (JArray)JsonConvert.DeserializeObject(jsonArrayText1);
string ja1a = ja[1]["a"].ToString();
//或者
JObject o = (JObject)ja[1];
string oa = o["a"].ToString();
嵌套格式
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();
C# 后台解析json,简单方法 字符串序列化为对象,取值的更多相关文章
- repr方法字符串输出实例对象的值
#coding=utf-8 #repr方法字符串输出实例对象的值 class CountFromBy(object): def __init__(self, val=0, incr=1): self. ...
- 如何解析json格式的字符串
package com.json; import java.util.ArrayList; import java.util.HashMap; import java.util.List; impor ...
- Json序列化为对象方法
/// <summary>/// json 序列化为对象/// </summary>/// <typeparam name="T">对象类型&l ...
- JSon_零基础_006_将JSon格式的字符串转换为Java对象
需求: 将JSon格式的字符串转换为Java对象. 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“name.values”集合, 通过get(key ...
- spring mvc接收ajax提交的JSON数据,并反序列化为对象
需求:spring mvc接收ajax提交的JSON数据,并反序列化为对象,代码如下: 前台JS代码: //属性要与带转化的对象属性对应 var param={name:'语文',price:16}; ...
- Java序列化对象为字符串并将字符串反序列化为对象
对象的序列化与反序列化其实就是将对象的状态保存下来,一般是保存到文件中,但是其实更常用的是将对象序列化为字符串保存到数据库中,然后在需要读取对象的情况下将字符串反序列化为对象. 可以序列化的类必须 ...
- vbs 解析 json jsonp 方法
昨天说了下用 htmlfile 来解析 html,今天依然用他来解析,htmlfile 是一个 COM 版的 BOM 和 DOM,所以解析 html, 执行 js 完全不在话下,今天就继续解析 jso ...
- Java创建和解析Json数据方法(五)——Google Gson包的使用
(五)Google Gson包的使用 1.简介 Gson包中,使用最多的是Gson类的toJson()和fromJson()方法: ①toJson():将java对象转化为json数据 ...
- Java创建和解析Json数据方法(二)——org.json包的使用
(二)org.json包的使用 1.简介 工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookie ...
随机推荐
- shortcut&website
作者:Vincent链接:https://www.zhihu.com/question/28993252/answer/61618961来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...
- Q143 重排链表
给定一个单链表 L:L0→L1→-→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→- 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例 1: ...
- 高性能web服务器(热死你)Resin Linux的安装、配置、部署,性能远超Nginx支持Java、PHP等
高性能web服务器(热死你)Resin Linux的安装.配置.部署,性能远超Nginx支持Java.PHP等 一. 安装resin 1. 下载resin: 下载地址:http://cauch ...
- 当spring抛出异常时出现的页面的@ExceptionHandler(RuntimeException.class) 用法
当spring抛出异常时出现的页面的@ExceptionHandler(RuntimeException.class) 用法 主要用在Controller层 @ExceptionHandler(Run ...
- apktook 反编译错误
Exception in thread "main" brut.androlib.err.UndefinedResObject: resource spec: 0x01010490 ...
- Types的Type访问模式
在Types类中定义的访问都类如下: 1.MapVisitor类 2.SimpleVisitor 3.UnaryVisitor 4.TypeRelation
- 最新 IntelliJ Idea 2017 激活方法(转)
转载地址:http://www.cnblogs.com/suiyueqiannian/p/6754091.html 1. 到网站 http://idea.lanyus.com/ 获取注册码. 2.填入 ...
- 第4章 scrapy爬取知名技术文章网站(2)
4-8~9 编写spider爬取jobbole的所有文章 # -*- coding: utf-8 -*- import re import scrapy import datetime from sc ...
- Spring与SpringMVC的关系
在此鉴于你已经了解过Spring的相关知识,简单描述一下Spring与Spring的关系 在框架的使用中,Spring类似于一个具有多种特性,也可以说是多种功能模块的应用平台,(特性就比如IoC,AO ...
- centos文件/文件夹操作-检查磁盘、内存、cpu使用情况-vi操作命令
Part1:CentOS文件/文件夹操作 1.新建文件夹 即创建目录 mkdir 文件名 新建一个名为test的文件夹在home下 vi source1 mkdir /home/test 注意:当创建 ...