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 原生格式,这意 ...
随机推荐
- C# 简单反射实现winform左侧树形导航,右侧切换内容
先看看效果: 核心代码: using System; using System.Collections.Generic; using System.ComponentModel; using Syst ...
- 关于.net core使用nginx做反向代理获取客户端ip的问题
1.正常情况下.net core获取客户端ip是比较简单的 /// <summary> /// 获取客户Ip /// </summary> /// <param name ...
- java中身份证号和的银行卡的深度校验
一: 身份证号: package com.mobile.utils; import java.text.SimpleDateFormat; import java.util.Calendar; imp ...
- D12——C语言基础学PYTHON
C语言基础学习PYTHON——基础学习D12 20180912内容纲要: 1.数据库介绍 2.RDMS术语 3.MySQL数据库介绍和基本使用 4.MySQL数据类型 5.MySQL常用命令 6.外键 ...
- 阿里云centos 开启ipv6
参考网址 https://blog.chenjia.me/articles/160301-134110.html?spm=5176.bbsr285557.0.0.g1Oemn 阿里云限制了ipv6的功 ...
- 轮播图采用js、jquery实现无缝滚动和非无缝滚动的四种案例实现,兼容ie低版本浏览器
项目源代码下载地址:轮播图 以下为项目实现效果:(由于gif太大,所以只上传一张图片,但效果完全能实现,经测试,在ie各版本浏览器及chrome,firefox等浏览器中均能实现效果,可以实现点击切换 ...
- ubuntu升级pip后, ImportError: cannot import name ‘main‘
场景描述: 原先pip安装完成之后,一直没有更新版本,原pip版本为8.1.1,今天安装python 包pysftp的时候,提示需要升级pip到(pip 10.0.1); 于是乎,直接手到擒来,终端命 ...
- spring cloud开发、部署注意
一.开发时,配置服务的配置使用本地路径,不使用svn和git,因为后者每个开发人员都会修改配置,导致别人也拿到其他人修改的配置,本地配置示例如下: spring: application: name: ...
- [Java初探外篇]__关于时间复杂度与空间复杂度
前言 我们在前面的排序算法的学习中了解到了,排序算法的分类,效率的比较所使用到的判断标准,就包括时间复杂度和空间复杂度,当时因为这两个定义还是比较难以理解的,所以决定单独开一篇文章,记录一下学习的过程 ...
- java工具类-日期工具类
1.获得时间戳 为了统一其他语言的如php和unix系统获取的时间戳是10位长度的,精确到秒. java时间戳长度是13位,精确到毫秒 我们获取时间戳需要相应处理. //获取当前时间戳,除以1000, ...