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 原生格式,这意 ...
随机推荐
- Centos7 下一键安装JDK和Maven
JDK 1. 使用yum search java|grep jdk 查看jdk版本 2. 选择版本安装 yum install java-1.7.0-openjdk,如果用1.8的,只用改版本号即可. ...
- dialog里屏蔽ESC和回车
重载PreTranslateMessage,在return之前加一句判断,只要是按下ESC和回车的消息,就直接置之不理即可,代码如下: if( pMsg->message == WM_KEYDO ...
- MariaDB 库的基本操作(2)
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可MariaDB的目的是完全兼容MySQL,包括API和命令行,MySQL由于现在闭源了,而能轻松成为MySQ ...
- file_put_contents 换行
file_put_contents('test.text', json_encode($result) . PHP_EOL, FILE_APPEND);
- Swift5 语言参考(七) 属性
属性提供有关声明或类型的更多信息.Swift中有两种属性,即适用于声明的属性和适用于类型的属性. 您可以通过编写@符号后跟属性的名称以及属性接受的任何参数来指定属性: @attribute name ...
- mongodb postgresql mysql jsonb对比
mongodb pg mysql jsonb对比 http://erthalion.info/2017/12/21/advanced-json-benchmarks/ 使用禁用jsonb列的压缩 AL ...
- Dell R730服务器 Raid5配置
Dell R730服务器,有7块5t硬盘,默认做的RAID5.我们的目的是取其中6块硬盘做RAID5,留一块硬盘做热备. 一块SSD系统盘. 在这里,我具体解释一下 ①6块硬盘做成RAID5 ②6块硬 ...
- scala中的一些特殊符号的意义
1.作为“通配符”,类似Java中的*.如import scala.math._ 2.:_*作为一个整体,告诉编译器你希望将某个参数当作参数序列处理!例如val s = sum(1 to 5:_*)就 ...
- windows线程退出的方法
线程的handle用处: 线程的handle是指向“线程的内核对象”的,而不是指向线程本身.每个内核对象只是内核分配的一个内存块,并且只能由内核访问.该内存块是一种数据结构,它的成员负责维护对象的各种 ...
- 确保线程安全下使用Queue的Enqueue和Dequeue
场景是这样,假设有一台设备会触发类型为Alarm的告警信号,并把信号添加到一个Queue结构中,每隔一段时间这个Queue会被遍历检查,其中的每个Alarm都会调用一个相应的处理方法.问题在于,检查机 ...