项目之——利用json实现序列化与反序列化

comm目录下的另外几个文件

使用了开源的库jsoncpp,可下载。

(1)my_json.h

  1 #include<iostream>
  2 #include<unistd.h>
  3 #include<string>
  4 #include "json/json.h"
  5 
  6 class my_json
  7 {
  8 public:
  9     my_json();
 10     ~my_json();
 11     static int serialize(Json::Value& _val,std::string& _out_str);
 12     static int deserialize(Json::Value& _val,std::string& _in_str);
 13 private:
 14     Json::Value val;
 15     std::string str;
 16 };

(2)my_json.cpp

  1 #include "my_json.h"
  2 
  3 my_json::my_json()
  4 {}
  5 my_json::~my_json()
  6 {}
  7 int my_json::serialize(Json::Value& _in_val,std::string& _out_str)
  8 {
  9 #ifdef DEBUG
 10     Json::StyledWriter _write;
 11     _out_str=_write.write(_in_val);
 12 #else
 13     Json::FastWriter _write;
 14     _out_str=_write.write(_in_val);
 15 #endif
 16     return 0;
 17 }
 18 int my_json::deserialize(Json::Value& _out_val,std::string& _in_str)
 19 {
 20     Json::Reader _read;
 21     if(_read.parse(_in_str,_out_val,false))
 22         return 0;
 23     return 1;
 24 }

(3)udp_data.h

  1 #include<iostream>
  2 #include<string>
  3 #include "json/json.h"
  4 #include "my_json.h"
  5 class udp_data
  6 {
  7 public:
  8 //  udp_data(std::string _nick_name,std::string _msg,std::string _school,std::string _cmd);
  9     udp_data();
 10     ~udp_data();
 11     void to_string(std::string _in_nick_name,std::string _in_msg,std::string _in_school,std::string _in_cmd,std::string &_out_string);
 12 //void to_value(std::string& _out_nick_name,std::string& _out_msg,std::string& _out_school,std::string& _out_cmd,std::string& _in_string);
 13 void to_value(std::string& _in_string);
 14 private:
 15     std::string nick_name;
 16     std::string msg;
 17     std::string school;
 18     std::string cmd;
 19 };

(4)udp_data.cpp

  1 #include "udp_data.h"
  2 
  3 //udp_data::udp_data(std::string _nick_name,std::string _msg,std::string _school,std::string _cmd)
  4 //  :nick_name(_nick_name)
  5 //  ,msg(_msg)
  6 //  ,school(_school)
  7 //  ,cmd(_cmd)
  8 //{}
  9 
 10 udp_data::udp_data()
 11 {}
 12 
 13 udp_data::~udp_data()
 14 {}
 15 void udp_data::to_string(std::string _in_nick_name,std::string _in_msg,std::string _in_school,std::string _in_cmd,std::string& _out_string)
 16 {
 17     nick_name=_in_nick_name;
 18     msg=_in_msg;
 19     school=_in_school;
 20     cmd=_in_cmd;
 21 
 22     Json::Value root;
 23     root["nick_name"]=nick_name;
 24     root["msg"]=msg;
 25     root["school"]=school;
 26     root["cmd"]=cmd;
 27 
 28     my_json::serialize(root,_out_string);
 29 }
 30 //void udp_data::to_string(std::string& _out_string)
 31 //{
 32 //  Json::Value root;
 33 //  root["nick_name"]=nick_name;
 34 //  root["msg"]=msg;
 35 //  root["school"]=school;
 36 //  root["cmd"]=cmd;
 37 //  my_json::serialize(root,_out_string);
 38 //}
 39 
 40 //void udp_data::to_value(std::string& _out_nick_name,std::string& _out_msg,std::string& _out_school,std::string& _out_cmd,std::string& _in_string)
 41 //{
 42 //  Json::Value val;
 43 //  my_json::deserialize(_in_string,val);
 44 //
 45 //  _out_nick_name=val["nick_name"].asString();
 46 //  _out_msg=val["msg"].asString();
 47 //  _out_school=val["school"].asString();
 48 //  _out_cmd=val["cmd"].asString();
 49 //
 50 //  nick_name=_out_nick_name;
 51 //  msg=_out_msg;
 52 //  school=_out_school;
 53 //  cmd=_out_cmd;
 54 //}
 55 
 56 void udp_data::to_value(std::string& _in_string)
 57 {
 58     Json::Value val;
 59     my_json::deserialize(val,_in_string);
 60 
 61     nick_name=val["nick_name"].asString();
 62     msg=val["msg"].asString();
 63     school=val["school"].asString();
 64     cmd=val["cmd"].asString();
 65 
 66     std::cout<<"nick_name:"<<nick_name<<std::endl;
 67     std::cout<<"msg:"<<msg<<std::endl;
 68     std::cout<<"school:"<<school<<std::endl;
 69     std::cout<<"cmd:"<<cmd<<std::endl;
 70 }
 71 
 72 //void udp_data::to_value(std::string& _in_string)
 73 //{
 74 //  Json::Value val;
 75 //  my_json::deserialize(_in_string,val);
 76 //}
 77 int main()
 78 {
 79     udp_data _data;
 80 //  std::string out_string;
 81 //  _data.to_string("luu","beautiful","XPU","dancing",out_string);
 82 //  std::cout<<out_string;
 83 
 84 //  std::string in_string="{luu beautiful XPU dancing}";
 85     std::string in_string="{\"cmd\":\"dancing\",\"msg\":\"beautiful\",\"nick_name\":\"luu\",\"school\":\"XPU\"}";
 86     _data.to_value(in_string);
 87     return 0;
 88 }

//makefile

  1 ROOT_PATH=$(shell pwd)
  2 INCLUDE=-I$(ROOT_PATH)/lib/include
  3 LIB=-L$(ROOT_PATH)/lib
  4 
  5 udp_data:udp_data.o my_json.o
  6     g++ -o [email protected] $^ $(LIB) -ljsoncpp
  7 
  8 %.o:%.cpp
  9     g++ -c $< $(INCLUDE) -D_DEBUG_ 
 10 
 11 .PHONY:clean
 12 clean:
 13     rm -f udp_data *.o
 14

输出结果:

(1)序列化

(2)反序列化

时间: 2024-11-24 16:52:44

项目之——利用json实现序列化与反序列化的相关文章

ASP.NET 中JSON 的序列化和反序列化

JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍,ASP.NET如何序列化和反序列化的处理,在序列化和反序列化对日期时间.集合.字典的处理. 一.JSON简介: JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是"名值对"的集合.结构由大括号''{}'

Json的序列化与反序列化

想想某一天,你在看LOL攻略的时候,系统突然崩溃了,接着浏览器出现了密密麻麻的LOL帐号和密码,你一定在想:"天啊,这次要发财了,说不定里面有超凡号或者王者号,我得赶紧全部记下来."然而说完你就惊呆了,那么多的帐号密码,而且全部写在了Json里面,一个一个复制粘贴要记到什么时候啊...如果这时候我在你身边,我一定会帮助你的,前提是,要分几个王者号给我噢...  言归正传. 上面举的例子虽然有点不太现实,但其实是想和大家说明一个问题,如果要解析Json或XML,请不要使用检索字符串的方式

ASP.NET中JSON的序列化和反序列化

ASP.NET中JSON的序列化和反序列化 JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍,ASP.NET如何序列化和反序列化的处理,在序列化和反序列化对日期时间.集合.字典的处理.     一.JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是

Newtonsoft.Json 的序列化与反序列化

转自:http://www.cnblogs.com/08shiyan/p/3464028.html 首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framework和NHibernate的.我举例说明DataTable的序列化和反序列化.创建一个DataTable对象,如下: DataTable dt = new DataTable(); DataColumn dcName = new DataColumn("Name"); Da

[转]ASP.NET中JSON的序列化和反序列化

本文转自:http://www.cnblogs.com/zhaozhan/archive/2011/01/09/1931340.html JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍,ASP.NET如何序列化和反序列化的处理,在序列化和反序列化对日期时间.集合.字典的处理.     一.JSON简介 JSON(JavaScript Objec

Json.Net序列化和反序列化设置

首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framework和NHibernate的.我举例说明DataTable的序列化和反序列化.创建一个DataTable对象,如下: DataTable dt = new DataTable(); DataColumn dcName = new DataColumn("Name"); DataColumn dcAge = new DataColumn("Age");

Asp.net中Json的序列化和反序列化(一)

JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍,ASP.NET如何序列化和反序列化的处理,在序列化和反序列化对日期时间.集合.字典的处理.     一.JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是“名值对”的集合.结构由大括号'{}',中括

ASP.NET MVC 网站开发总结(六)——简谈Json的序列化与反序列化

首先,先简单的谈一下什么是序列化与反序列化,序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后,可以通过从存储区中读取或反序列化(Deserialization)对象的状态,重新创建该对象. 一般我们把Json的序列化与反序列化用在哪些地方呢?对于网站开发来说,一般我们会用Json来进行前台和后台的数据传递(常与Ajax一起使用),而这个过程就涉及到了Json的序列化与反序列化. 那么我们就来简单看

JAVA与JSON的序列化、反序列化

package com.linkage.app.memcache; import java.util.HashMap;import java.util.Map.Entry; import net.sf.ezmorph.Morpher;import net.sf.ezmorph.MorpherRegistry;import net.sf.ezmorph.bean.BeanMorpher;import net.sf.json.JSONObject;import net.sf.json.util.JS