10 Json(unity3D)
//写入json文档
注意事项:
1、在Asset下要有一个StreamingAssets文件夹
2、在文件夹内,有一个已创建好的json空文档
3、引入命名空间 using Litjson; using System; using System.IO;
4、创建英雄和技能类
Demo所需要的命名空间:
[Serializable]
class Hero
{
public string HeroName;
public string Hp;
public string Attack;
public List<Skill> Skills = new List<Skill> ();
} [Serializable]
class Skill
{
public string keyCode;
public string Name;
public string CD;
public string MP;
} void CreatJson ()
{
JsonData nuoke = new JsonData ();
nuoke ["HeroName"] = "诺克";
nuoke ["HP"] = ;
nuoke ["Attack"] = ;
nuoke ["Skills"] = new JsonData (); //一技能:大杀四方
JsonData skill1 = new JsonData ();
skill1 ["keyCode"] = "Q";
skill1 ["Name"] = "大杀四方";
skill1 ["CD"] = "9/8/7/6/5";
skill1 ["MP"] = ""; //二技能:致残打击
JsonData skill2 = new JsonData ();
skill2 ["keyCode"] = "W";
skill2 ["Name"] = "致残打击";
skill2 ["CD"] = "9/8/7/6/5";
skill2 ["MP"] = ""; //三技能:无情铁手
JsonData skill3 = new JsonData ();
skill2 ["keyCode"] = "E";
skill2 ["Name"] = "无情铁手";
skill2 ["CD"] = "24/21/18/15/12";
skill2 ["MP"] = ""; //大招:诺克萨斯断头台
JsonData skill4 = new JsonData ();
skill2 ["keyCode"] = "R";
skill2 ["Name"] = "诺克萨斯断头台";
skill2 ["CD"] = "120/100/80";
skill2 ["MP"] = "100/100/0"; //将生成的技能对象放到诺克的技能中
nuoke ["Skills"].Add (skill1);
nuoke ["Skills"].Add (skill2);
nuoke ["Skills"].Add (skill3);
nuoke ["Skills"].Add (skill4); //将生成的对象转化成json文档
string json = JsonMapper.ToJson (nuoke);
//将json写入到文件
string path = Application.streamingAssetsPath + "/Nuoke.json";
StreamWriter sw = new StreamWriter (path);
sw.Write (json);
sw.Close ();
} //解析json
void PraseJson ()
{
FileInfo file = new FileInfo (Application.dataPath + "/StreamingAssets/Nuoke.json");
StreamReader reader = new StreamReader (file.OpenRead (), Encoding.UTF8);
string content = reader.ReadToEnd ();
reader.Close ();
reader.Dispose ();
JsonData nuokeData = JsonMapper.ToObject (content);
m_text.text = "英雄:" + nuokeData ["HeroName"] + "\n";
//通过JsonData对象访问数据
for (int i = ; i < nuokeData ["Skills"].Count; i++) {
m_text.text += "技能:" + nuokeData ["Skills"] [i] ["Name"] + "\n技能键:\t" +
nuokeData ["Skills"] [i] ["keyCode"] + "\nCD:\t" +
nuokeData ["Skills"] [i] ["CD"] + "\nMP:\t" + nuokeData ["Skills"] [i] ["MP"] + "\n";
}
}
写入Json的中文会默认转化为UTF-8编码格式,在解析时,只需转换格式即可
unity3d使用litjson中文显示的问题 ,一下代码选至(https://www.cnblogs.com/fyluyg/p/5963052.html)
我们在使用litjson时它的编码方式是unicode的,所以我将json转成string输出时显示的是unicode的编码。这样我们显示或者保存中文时不是很方便。我们可以将中文的unicode转成能识别的GBK编码。 using UnityEngine;
using System.Collections.Generic;
using Utils;
using LitJson;
using System;
using System.Text.RegularExpressions; public class Script1 : MonoBehaviour
{
public void OnTestJson()
{
JsonData sData = new JsonData();
JsonData data1 = new JsonData();
JsonData data2 = new JsonData(); data1["等级"] = "";
data1["位置"] = "m=1000,x=33,y=21"; //新手村 data2["等级"] = "";
data2["位置"] = "m=1001,x=58,y=97"; //桃园镇 sData["张三"] = data1;
sData["李四"] = data2; string jsonStr = sData.ToJson(); Regex reg = new Regex(@"(?i)\\[uU]([0-9a-f]{4})");
var ss = reg.Replace(jsonStr, delegate(Match m) { return ((char)Convert.ToInt32(m.Groups[].Value, )).ToString(); }); print(ss);
}
}
10 Json(unity3D)的更多相关文章
- 10. JavaScript学习笔记——JSON
10. JSON ///[JSON是一种数据格式,不是JS 独有的] ///[JSON语法] /* 1.数据书写格式:"name":value,JSON要求给属性名加上[双引号], ...
- 原生JS:JSON对象详解
JSON对象 支持到IE8,旧版的IE需要Polyfill 本文参考MDN做的详细整理,方便大家参考[MDN](https://developer.mozilla.org/zh-CN/docs/Web ...
- 如何正确的使用json?如何在.Net中使用json?
什么是json json是一种轻量级的数据交换格式,由N组键值对组成的字符串,完全独立于语言的文本格式. 为什么要使用json 在很久很久以前,调用第三方API时,我们通常是采用xml进行数据交互,但 ...
- JSON.parse
摘自:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse The J ...
- JS Json数据转换
*** json字符串中不能出现单引号,不然JSON.parse会报错,处理方式将单引号转义 概述 JSON.stringify() 方法可以将任意的 JavaScript 值序列化成 JSON 字符 ...
- JSON简介以及用法汇总
什么是JSON? JavaScript 对象表示法(JavaScript Object Notation). JSON是一种轻量级的数据交换格式,某个JSON格式的文件内部譬如可以长成这样: { &q ...
- Asp.net中Json的序列化和反序列化(一)
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...
- ASP.NET中JSON的序列化和反序列化
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍 ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介 ...
- C++ json库jsoncpp 吐槽
Explain 最近在做游戏接入SDK时用到C++的json库jsoncpp,jsoncpp 是一款优秀的json库,但恶心的一点是它采用Assert作为错误处理方法,而assert在linux下通过 ...
随机推荐
- NFS实战
博客实践: (1) nfs server导出/data/application/web,在目录中提供wordpress; (2) nfs client挂载nfs server导出的文件系统至/var/ ...
- 非阻塞多路IO
socket.listen() rfds=[] wfds=[] while(select(rfds,wfds,timeout)){//事件循环 client=socket.accept(timeout ...
- 1.URLConnection
//爬虫://1.请求到某个网站去//2.返回一些HTML代码//3.从HTML代码提取你想要的信息 HTML解析//4.如果这些HTML中又有你感兴趣的内容//5.递归爬取//准备好网址 URL u ...
- SciPy 输入输出
章节 SciPy 介绍 SciPy 安装 SciPy 基础功能 SciPy 特殊函数 SciPy k均值聚类 SciPy 常量 SciPy fftpack(傅里叶变换) SciPy 积分 SciPy ...
- 使用delphi TThread类创建线程备忘录
备忘,不常用经常忘了细节 TMyThread = class(TThread) private { Private declarations } protected procedure Execute ...
- python scipy优化器模块(optimize)
pyhton数据处理与分析之scipy优化器及不同函数求根 1.Scipy的优化器模块optimize可以用来求取不同函数在多个约束条件下的最优化问题,也可以用来求取函数在某一点附近的根和对应的函数值 ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-zoom-in
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- python中excel表格的读写
#!usr/bin/env python #-*- coding:utf-8 -*- import xlrd import xlwt from xlutils.copy import copy imp ...
- POJ1703 && POJ2942 &&POJ 1182 并查集 这个做法挺巧妙
Find them, Catch them Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 37242 Accepted: ...
- Redis集群环境之linux搭建单机版
Redis解决的问题是:作为一个缓存nosql数据库,能够支持高并发,关系型数据库是存储在磁盘中,通过io读写,而redis是存储在内存中,因此,能够实现高可用,他主要是解决数据库性能瓶颈而产生的. ...