JSON数据的各种操作
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Web;
using System.IO;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq; namespace DAL{
public class JsonHelper {
public static byte[] ToArray(object o) {
return Encoding.UTF8.GetBytes(ToJsonString(o));
}
public static string ToJsonString(object o) {
JsonSerializer ser = new JsonSerializer();
StringWriter write = new StringWriter();
ser.Serialize(write, o);
return write.GetStringBuilder().ToString();
} public static string BuffToText(byte[] buf, int offset, int length) {
return Encoding.UTF8.GetString(buf, offset, length);
}
public static string BuffToText(byte[] buf) {
return Encoding.UTF8.GetString(buf);
}
public static string BytesToText(byte[] buf, int index, int len) {
return Encoding.UTF8.GetString(buf, index, len);
}
public static void toJson<T>(string key, T v, StringBuilder builder) {
JSON.SerializeString(key, builder);
builder.Append(":");
if (v is string) {
JSON.SerializeString(v as string, builder);
}
else {
builder.Append(v.ToString());
}
}
public static void toFirstJson<T>(string key, T v, StringBuilder builder) {
builder.Append("{");
toJson(key, v, builder);
}
public static void toMiddleJson<T>(string key, T v, StringBuilder builder) {
builder.Append(",");
toJson(key, v, builder);
}
public static void toLastJson<T>(string key, T v, StringBuilder builder) {
toMiddleJson(key, v, builder);
builder.Append("}");
}
public static string toJson(Dictionary<string, object> dict) {
StringBuilder builder = new StringBuilder();
toJson(dict, builder);
return builder.ToString();
}
public static void toJson(Dictionary<string, object> dict, StringBuilder builder) {
builder.Append("{");
bool first = true;
foreach (KeyValuePair<string, object> kv in dict) {
if (first == false)
builder.Append(",");
else
first = false;
JSON.SerializeString(kv.Key, builder);
builder.Append(":");
if (kv.Value is string) {
JSON.SerializeString((string)kv.Value, builder);
}
else if (kv.Value is int) {
builder.Append(kv.Value.ToString());
}
else {
JSON.SerializeString(kv.Value.ToString(), builder);
}
}
builder.Append("}");
} public static string ObjectToJson(object item) {
using (MemoryStream ms = ObjectToJsonStream(item)) {
StringBuilder sb = new StringBuilder();
sb.Append(Encoding.UTF8.GetString(ms.ToArray()));
return sb.ToString();
}
}
public static MemoryStream ObjectToJsonStream(object item) {
DataContractJsonSerializer serializer = new DataContractJsonSerializer(item.GetType());
MemoryStream ms = new MemoryStream();
serializer.WriteObject(ms, item);
return ms;
}
public static T JsonToObject<T>(string jsonString) {
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString))) {
T jsonObject = (T)ser.ReadObject(ms);
return jsonObject;
}
}
public static T BuffToObject<T>(byte[] buff) {
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
using (MemoryStream ms = new MemoryStream(buff)) {
T jsonObject = (T)ser.ReadObject(ms);
return jsonObject;
}
}
public static T JsonToObject<T>(Stream ms) {
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
T jsonObject = (T)ser.ReadObject(ms);
return jsonObject;
} public static JToken ToJson(string str) {
return JToken.Parse(str);
}
public static JToken ToJson(byte[] buf) {
var str = Encoding.UTF8.GetString(buf);
return JToken.Parse(str);
}
public static JToken ToJson(Stream ms) {
var m = ms as MemoryStream;
if (m == null) {
m = new MemoryStream();
ms.CopyTo(m);
}
return ToJson(m.ToArray());
} public static byte[] ObjectToBytes(object o) {
return Encoding.UTF8.GetBytes(ObjectToJsonString(o));
}
public static string ObjectToJsonString(object o) {
return JsonConvert.SerializeObject(o);
}
public static T BytesToObjectT<T>(byte[] buf) {
return JsonConvert.DeserializeObject<T>(Encoding.UTF8.GetString(buf));
}
public static T ParseStream<T>(Stream ms) {
var s = new MemoryStream();
ms.CopyTo(s);
return BytesToObjectT<T>(s.ToArray());
}
public static T ParseStr<T>(string tx) {
return JsonConvert.DeserializeObject<T>(tx);
}
public static T ParseBuf<T>(byte[] buf) {
return JsonConvert.DeserializeObject<T>(Encoding.UTF8.GetString(buf));
}
public static Dictionary<string, T> ToDict<T>(JObject json) {
Dictionary<string, T> d = new Dictionary<string, T>();
foreach (KeyValuePair<string, JToken> kv in json) {
d[kv.Key] = TokenToT<T>(kv.Value);
}
return d;
}
public static T[] ArrayToT<T>(JToken a) {
List<T> list = new List<T>();
foreach (JToken m in a) {
list.Add(TokenToT<T>(m));
}
return list.ToArray();
}
private static JValue EnsureValue(JToken value) {
if (value == null)
throw new ArgumentNullException("value"); if (value is JProperty)
value = ((JProperty)value).Value; JValue v = value as JValue; return v;
}
public static T TokenToT<T>(JToken a) {
JValue v = EnsureValue(a);
return (T)(v.Value);
}
public static object ParseToObject(byte[] buff) {
string txt = Encoding.UTF8.GetString(buff);
try {
var v = JToken.Parse(txt);
return v;
//JObject o = J.Parse(txt);
//return o;
}
catch {
}
JArray oo = JArray.Parse(txt);
return oo;
}
public static Stream ToStream(object o) {
var str = JsonConvert.SerializeObject(o);
var buf = Encoding.UTF8.GetBytes(str);
return new MemoryStream(buf);
}
public static string ToStr(object o) {
return JsonConvert.SerializeObject(o);
}
public static byte[] ToBuf(object o) {
var str = JsonConvert.SerializeObject(o);
return Encoding.UTF8.GetBytes(str);
}
}
}
JSON数据的各种操作的更多相关文章
- Java操作JSON数据(3)--fastjson操作JSON数据
fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean.本文介绍下fastjs ...
- Java操作JSON数据(2)--Gson操作JSON数据
Gson是Google公司发布的一个开发源码的Java库,可用于将Java对象转换为JSON字符串,也可用于将JSON字符串转换为对应的Java对象.本介绍下Gson的基本使用方法,包括序列化和反序列 ...
- Java操作JSON数据(1)--JSON-lib操作JSON数据
JSON-lib是一个java库,用于将bean.映射.集合.java数组和XML转换为JSON,或将JSON转为beans和DynaBeans.JSON-lib最后的版本是2.4,更新时间是2010 ...
- json数据的jquery操作和asp.net后台操作
jquery操作 json对象创建 var item0={"a":"val1","b":"val2"}; json对象字 ...
- JSON相关知识,转载:删除JSON中数组删除操作
一:JSON是什么 JSONg格式:对象是一个无序的“名称/值”对的集合. 对象以括号开始,括号结束. 名称冒号分隔值. "名称/值"之间用逗号分隔 例: var people = ...
- python 读写json数据
json 模块提供了一种很简单的方式来编码和解码JSON 数据. 字符串操作 其中两个主要的函数是json.dumps() 和json.loads() ,要比其他序列化函数库如pickle 的接口少得 ...
- 使用jackson解析JSON数据
本文介绍使用jackson来对json数据进行解析操作 首先,需要去官网下载jackson,本文使用的是(jackson-all-1.9.11.jar) 主要通过ObjectMapper对json进行 ...
- C++解析Json,使用JsonCpp读写Json数据
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.通常用于数据交换或存储. JsonCpp是一个基于C++语言的开源库,用于C++程序的J ...
- js之操作JSON数据
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
随机推荐
- DataGrid列表信息保存为EXCEL到指定的路径 ---------继续DataGrid在WPF的数据绑定
一.许多WPF或者Winform程序在保存数据时,会以EXCEL或者文本的形式展现可视化界面的数据,本文就简单介绍下将DataGrid列表信息保存为EXCEL到指定的路径下,例子很简单,用的着的直接用 ...
- “全栈2019”Java多线程第三十四章:超时自动唤醒被等待的线程
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- <转>(笔记)正则表达式的几种引擎
这篇主要是基于<精通正则表达式>的一篇读书笔记,因为书还没看完,可能以后还会有相关的笔记.(工作以后看书的效率真的很低啊……) 正则引擎主要可以分为基本不同的两大类:一种是DFA(确定性有 ...
- nginx常用的超时配置说明
client_header_timeout 语法 client_header_timeout time默认值 60s上下文 http server说明 指定等待client发送一个请求头的超时时间(例 ...
- Vim使用Vundle安装代码补全插件(YouCompleteMe)
安装 Vundle 它的使用方法很简单,安装一个插件只需要在 ~/.vimrc 按照规则中添加 Plugin 的名称,某些需要添加路径,之后在 Vim 中使用:PluginInstall既可以自动化安 ...
- 创建python3虚拟环境指令和冻结所安装的包
mkvirtualenv file_name -p python3 去掉后面的 P 和python3 代表创建python2环境 其中p代表路径的意思 冻结所安装包命令 pip freeze > ...
- web socket 入门
WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议,其优雅地解决了以往web服务器不能向web客户端实时推送消息的问题. 在浏览器js环境中,创建一个websock ...
- Python文件与函数练习题
练习题 文件处理相关 编码问题 请说明python2 与python3中的默认编码是什么? python2默认是ASCII码,python3默认是utf-8 为什么会出现中文乱码?你能列举出现乱码的情 ...
- Vue2.5开发去哪儿网App 搜索功能完成
效果展示: Search.vue: <div class="search-content" ref="search" v-show="keywo ...
- MySQL笔记(3)---文件
1.前言 第二章简单记录了一下InnoDB存储引擎的一个基本内容,介绍了保证高效插入的Insert Buffer,change Buffer和确保数据安全的write ahead log以及doubl ...