JSON简介

1. JSON 是纯文本

2. JSON 是一种轻量级的数据交换格式

3. JSON 具有层级结构(值中存在值)

1. 数据在键值对
2. 数据由逗号分隔
3. 花括号保存对象
4. 方括号保存数组

{
    "name" : "小李飞刀",
    "age"  : 20,
    "height" : 1.99,
    "school" : {
        “name” : “蓝鸥",
        “address” : “上海松江"
          },
    "photos" : [
        {
            "icon" : "beauty.png",
            "time" : "2017-01-01"
        },
        {
            "icon" : "nice.png",
            "time" : "2017-02-07"
        },
        {
            "icon" : "good.png",
            "time" : "2017-05-06"
        }
    ]
}

使用类库有两种:
1. System.Json(便于JSON生成)
需要将System.Json.dll放入到Assets文件夹下
2. LitJson(便于JSON解析)
需要将LitJson.dll放入到Assets文件夹下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;
using System.IO;
using UnityEngine.UI;
using System;public class OpertionJson : UIHandler {//用于操作json数据的对象JsonData data = new JsonData();//路径public string filepath;//json格式字符串public string jsonStr;public Button SaveJsonBtn;public Button LoadJsonBtn;// Use this for initializationvoid Start () {data["Name"] = "夏洛克";data["Level"] = 20;data["Hp"] = 500;data["Attack"] = 100;data["Defence"] = 50;//将jsonData对象转成json格式字符串jsonStr = data.ToJson();//路径赋值filepath = Application.dataPath + "/shylock.json";SaveJsonBtn = GetByName("SaveJsonBtn").GetComponent<Button>();LoadJsonBtn = GetByName("LoadJsonBtn").GetComponent<Button>();SaveJsonBtn.onClick.AddListener(OnSaveJsonClick);LoadJsonBtn.onClick.AddListener(OnLoadJsonClick);}private void OnLoadJsonClick(){//流读取器StreamReader sr = new FileInfo(filepath).OpenText();//读取文本内容,直到结束string json = sr.ReadToEnd();//将json格式的字符串转换成EnemyData对象EnemyData enemyData = JsonMapper.ToObject<EnemyData>(json);Debug.Log("读取" + enemyData.Name + enemyData.Hp + enemyData.Level);sr.Close();}void OnSaveJsonClick(){//保存文件SaveJson(jsonStr);print("保存" + jsonStr);}void SaveJson(string text){//流写入器StreamWriter sw;//文件信息操作类FileInfo info = new FileInfo(filepath);//判断路径是否存在if (!info.Exists){sw = info.CreateText();}else{//先删除再创建info.Delete();sw = info.CreateText();}sw.WriteLine(text);sw.Close();}// Update is called once per framevoid Update (){}
}
using LitJson;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;public struct Skill
{public string killname;public string killkey;public int[] time;public int killMP;
}
public struct Nork
{public string Name;public double HP;public double Attack;public Skill[] kills;}public class NorkController : MonoBehaviour {// Use this for initializationvoid Start () {Nork nork_ = new Nork();nork_.Name = "诺克萨斯之手";nork_.HP = 582.24;nork_.Attack = 55.88;nork_.kills = new Skill[5];nork_.kills[0].killname = "出血";nork_.kills[0].killkey = "null";nork_.kills[1].killname = "大杀四方";nork_.kills[1].killkey = "Q";nork_.kills[1].time = new int[5] { 9, 8, 7, 6, 5 };nork_.kills[1].killMP = 30;nork_.kills[2].killname = "致残打击";nork_.kills[2].killkey = "W";nork_.kills[2].time = new int[5] { 9, 8, 7, 6, 5 };nork_.kills[2].killMP = 30;nork_.kills[3].killname = "无情铁手";nork_.kills[3].killkey = "E";nork_.kills[3].time = new int[5] { 24, 21, 18, 15, 12 };nork_.kills[4].killname = "诺克萨斯断头台";nork_.kills[4].killkey = "R";nork_.kills[4].time = new int[3] { 120, 100, 80 };nork_.kills[4].killMP = 100;string filePath = Application.dataPath + "/nork.json";StreamWriter streamWriter = new StreamWriter(filePath);string str = JsonMapper.ToJson(nork_);streamWriter.Write(str);streamWriter.Close();}// Update is called once per framevoid Update () {}
}

Unity 数据存储与读取_JSON相关推荐

  1. Unity数据存储方法

    Unity数据存储方法 首先Unity中共有五种数据存储的方法, 一.PlayerPrefs 二.读取普通文本资源:TextAsset 三.Json 四.XML存储 五.Sqlite牵涉到的Sqlit ...

  2. Labview数据存储与读取——TDMS文件的创建与写入

    Labview数据存储与读取--TDMS文件的创建与写入 你好,这是我在自学Labview编写软件过程中使用的一些功能.我在存储采集卡数据时,通过阅读大量他人的程序,发现TDM及TDMS文件十分适合波 ...

  3. Android数据存储和读取的三种方法

    Android数据存储和读取的三种方法 一.文件存储 二.Context存储 三.SharedPreferences存储 一.文件存储 1.利用文件进行数据的存储 public static bool ...

  4. python读二进制格点雷达基数据_对numpy中二进制格式的数据存储与读取方法详解...

    使用save可以实现对numpy数据的磁盘存储,存储的方式是二进制.查看使用说明,说明专门提到了是未经压缩的二进制形式.存储后的数据可以进行加载或者读取,通过使用load方法. In [81]:np. ...

  5. Arduino EEPROM对结构体数据存储和读取

    Arduino EEPROM对结构体数据存储和读取 以Arduino UNO开发板为例. 注意:该示例不适用于在ESP8266上使用 EEPROM.put()或者 EEPROM.get()来对数据读写 ...

  6. LabVIEW存储数据笔记——数据存储与读取

    LabVIEW存储数据笔记 --数据存储与读取 一.基础控件 图1 右击程序面板 图2 (a)写数据:(b)读数据 二.写入数据 1.基础配置 图3 写数据引脚 'file(use dialog)': ...

  7. unity文件存储和读取

    原文地址:http://www.cnblogs.com/murongxiaopifu/p/4199541.html 前言: 一直有个想法,就是把工作中遇到的坑通过自己的深挖,总结成一套相同问题的解决方 ...

  8. R语言与数据分析——【笔记】2.R语言数据存储与读取

    R语言通过工作目录来对文件读取和写入,若一个文件不在工作目录,则必须给出其路径 可使用命令getwd()(获得工作目录)来找到目录:使用命令setwd("F:/2glkx")将当前 ...

  9. unity 多个数据存储和读取工具

    准备工作 在Project里面添加三个文件夹,第一个存放工具脚本,第二个存放读取数据的存储文件(这里我采用把数据存放在Excels表格里面),第三个存放生成的数据 下面是三个脚本 using Syst ...

最新文章

  1. Geany整体增加减少缩进快捷键
  2. linux系统如何进行录屏
  3. 使Win10用户获得特殊权限以便删除相应文件(夹)
  4. Java黑皮书课后题第6章:*6.4(反序显示一个整数)使用下面的方法体编写方法,反序显示一个整数…例如reverse(3456)返回6543,编写一个测试程序,提示用户输入一个整数,然后显示它的反序
  5. mysql 查询相同字段值的个数_好文 | MySQL 索引B+树原理,以及建索引的几大原则...
  6. python---tuple元祖
  7. Mybatis官方文档——入门
  8. Id都是“とつくとき”这样的怎么爬,在线等,急
  9. c语言程序命令行,ttyd(C语言编写的命令行程序) v1.3.1 免费版
  10. php 判断赋值 简写,PHP IF判断简写
  11. C语言课程设计学生籍贯信息,C语言课程设计 学生籍贯信息记录簿设计.doc
  12. 微信小程序富文本去除首行缩进样式_小程序富文本处理wxParse
  13. 提取中国范围数据的ncl代码
  14. 【EduCoder实训答案】JSP入门
  15. Android开发【记事本App】项目开发流程——1
  16. 翁恺c语言程序设计入门期末,程序设计入门-C语言 翁恺.doc
  17. halcon相机标定助手_使用Halcon助手来制作标定数据
  18. ClickHouse偶现 读取数据超时
  19. Scratch编程与数学结合-蜗牛爬井问题
  20. 编译安装php7.4

热门文章

  1. HTML+CSS ---- 背景图片
  2. Python人工智能完整学习路线
  3. html怎么做一个动态广告图,用CSS3实现广告的展示动画特效
  4. 阿里巴巴年报来了,一天收入6.85亿
  5. 水准测量的各种数字考点
  6. 物流matlab,物流配送线路优化Matlab算法研究
  7. STM32 学习笔记 expected a type specifier
  8. 北冥乘海生:996其实没什么卵用
  9. nginx: [emerg] open() /var/run/nginx/nginx.pid failed (2: No such file or directory)解决方法
  10. ng-alain php,在angular中基于ng-alain如何定义自己的select组件?