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 原生格式,这意 ...
随机推荐
- 简单理解 OAuth 2.0 及资料收集,IdentityServer4 部分源码解析
简单理解 OAuth 2.0 及资料收集,IdentityServer4 部分源码解析 虽然经常用 OAuth 2.0,但是原理却不曾了解,印象里觉得很简单,请求跳来跳去,今天看完相关介绍,就来捋一捋 ...
- 使用System.Net.Mail中的SMTP发送邮件(带附件)
System.Net.Mail 使用简单邮件传输协议SMTP异步发送邮件 想要实现SMTP发送邮件,你需要了解这些类 SmtpClient :使用配置文件设置来初始化 SmtpClient类的新实例. ...
- ubuntu14.04 下出现 libmysqlclient.so.20 找不到问题
解决办法: apt-get install libzdb-dev
- 跟着刚哥学Redis
NoSQL 简介 NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL".是对不同于传统的关系型数据库的数据库管理系统的统称.它泛指非关系型的数据库.随着 ...
- sed 横排扩展
sed "$!N;s/\n/KEY/" FILENAME
- EF 通过修改模版 更改生成实体名称
直接修改T4 模版中对应关系就可以了,我这里是去掉了表中的“_”
- flask框架--模板
今天又是一个精彩又无聊的一天,不过随着知识的缓慢的增加我的内心也充满了干劲,虽然前进的有些缓慢 但我不会这么容易放弃的,一定要相信自己,不要灰心 好了 ~ 不说废话了 , 我自己听的都有些受不了了 . ...
- 并发上下文控制包Context
Context,是golang用来控制并发流程的库,它能方便的将主控程序的停止信号传递到goroutinue中,从而实现一键中止关联goroutinue的执行,除此之外,它还能将外部变量通过Value ...
- POJ 2664
#include<iostream> #include<stdio.h> #include<algorithm> #define MAXN 105 using na ...
- POJ 2590
#include<iostream> #include<algorithm> #define MAXN 1000000 using namespace std; unsigne ...