搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
小小林熬夜学编程
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
[Python] 解析Pcap三个Python库(Dpkt Scapy Pyshark)应用实例_python 解析pcap
2
js 读取和清除cookie_js获取cookie和清除的方法
3
论文导读 | 利用GPU的基于图的近似近邻搜索加速研究_基于层次聚类的大规模图近似最近邻搜索
4
Minecraft开服教程,Windows搭建 我的世界(mc) 1.18.2 服务器教程_1.18.2forge服务端 windows
5
web前端框架——一些简单理解_web前端框架是什么
6
linux系统编程之进程概念(操作系统---管理,进程创建,进程状态,进程优先级, 环境变量,程序地址空间,进程O(1)调度方法)_是linux用户层的工作单元,也是linux进行系统调度的单元。
7
在CSDN上预祝各位新年快乐
8
八道指针面试题
9
Linux下搭建git服务器_linux 启动git server 命令
10
【2023 年第十三届 MathorCup 高校数学建模挑战赛】C 题 电商物流网络包裹应急调运与结构优化问题 赛后总结之31页论文及代码_2023mathorcup优秀论文
当前位置:
article
> 正文
Unity3d之json解析研究_jsonmapper.toobject
()
作者:小小林熬夜学编程 | 2024-02-21 11:35:36
赞
踩
jsonmapper.toobject
()
json是好东西啊!JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式
JSON简单易用,我要好好研究一下,和大家共享一下.
想了解更详细的数据可以参考一下百科:
http://baike.baidu.com/view/136475.htm
好了,我们步入正题:unity3d使用json
我写了4个方法:ReadJson(),ReadJsonFromTXT();WriteJsonAndPrint(),WriteJsonToFile(string,string).
想使用JSon需要dll动态链接库
还有一些相应的命名空间using UnityEngine;
using System.Collections;
using LitJson;
using System.IO;
#if UNITY_EDITOR
using UnityEditor;
#endif
首先你需要2个字符串,一个为路径,一个文txt文件。
我的写法如下:
public TextAsset txt;
public string filePath;
public string fileName;
// Use this for initialization
void Start () {
filePath = Application.dataPath + "/TextFile";
fileName = filePath + "/File.txt";
}
1. //读json数据
void ReadJson()
{
//注意json格式。我的只能在一行写入啊,要不就报错,懂的大牛,不吝赐教啊,这是为什么呢?
string str = "{'name':'taotao','id':10,'items':[{'itemid':1001,'itemname':'dtao'},{'itemid':1002,'itemname':'test_2'}]}";
//这里是json解析了
JsonData jd = JsonMapper.ToObject(str);
Debug.Log("name=" + jd["name"]);
Debug.Log("id=" + jd["id"]);
JsonData jdItems = jd["items"];
//注意这里不能用枚举foreach,否则会报错的,看到网上
//有的朋友用枚举,但是我测试过,会报错,我也不太清楚。
//大家注意一下就好了
for (int i = 0; i < jdItems.Count; i++)
{
Debug.Log("itemid=" + jdItems
["itemid"]);
Debug.Log("itemname=" + jdItems
["itemname"]);
}
Debug.Log("items is or not array,it's " + jdItems.IsArray);
}
2. //从TXT文本里都json
void ReadJsonFromTXT()
{
//解析json
JsonData jd = JsonMapper.ToObject(txt.text);
Debug.Log("hp:" + jd["hp"]);
Debug.Log("mp:" + jd["mp"]);
JsonData weapon = jd["weapon"];
//打印一下数组
for (int i = 0; i < weapon.Count; i++)
{
Debug.Log("name="+weapon
["name"]);
Debug.Log("color="+weapon
["color"]);
Debug.Log("durability="+weapon
["durability"]);
}
}
3. //写json数据并且打印他
void WriteJsonAndPrint()
{
System.Text.StringBuilder strB = new System.Text.StringBuilder();
JsonWriter jsWrite = new JsonWriter(strB);
jsWrite.WriteObjectStart();
jsWrite.WritePropertyName("Name");
jsWrite.Write("taotao");
jsWrite.WritePropertyName("Age");
jsWrite.Write(25);
jsWrite.WritePropertyName("MM");
jsWrite.WriteArrayStart();
jsWrite.WriteObjectStart();
jsWrite.WritePropertyName("name");
jsWrite.Write("xiaomei");
jsWrite.WritePropertyName("age");
jsWrite.Write("17");
jsWrite.WriteObjectEnd();
jsWrite.WriteObjectStart();
jsWrite.WritePropertyName("name");
jsWrite.Write("xiaoli");
jsWrite.WritePropertyName("age");
jsWrite.Write("18");
jsWrite.WriteObjectEnd();
jsWrite.WriteArrayEnd();
jsWrite.WriteObjectEnd();
Debug.Log(strB);
JsonData jd = JsonMapper.ToObject(strB.ToString());
Debug.Log("name=" + jd["Name"]);
Debug.Log("age=" + jd["Age"]);
JsonData jdItems = jd["MM"];
for (int i = 0; i < jdItems.Count; i++)
{
Debug.Log("MM name=" + jdItems
["name"]);
Debug.Log("MM age=" + jdItems
["age"]);
}
}
4. //把json数据写到文件里
void WriteJsonToFile(string path,string fileName)
{
System.Text.StringBuilder strB = new System.Text.StringBuilder();
JsonWriter jsWrite = new JsonWriter(strB);
jsWrite.WriteObjectStart();
jsWrite.WritePropertyName("Name");
jsWrite.Write("taotao");
jsWrite.WritePropertyName("Age");
jsWrite.Write(25);
jsWrite.WritePropertyName("MM");
jsWrite.WriteArrayStart();
jsWrite.WriteObjectStart();
jsWrite.WritePropertyName("name");
jsWrite.Write("xiaomei");
jsWrite.WritePropertyName("age");
jsWrite.Write("17");
jsWrite.WriteObjectEnd();
jsWrite.WriteObjectStart();
jsWrite.WritePropertyName("name");
jsWrite.Write("xiaoli");
jsWrite.WritePropertyName("age");
jsWrite.Write("18");
jsWrite.WriteObjectEnd();
jsWrite.WriteArrayEnd();
jsWrite.WriteObjectEnd();
Debug.Log(strB);
//创建文件目录
DirectoryInfo dir = new DirectoryInfo(path);
if (dir.Exists)
{
Debug.Log("This file is already exists");
}
else
{
Directory.CreateDirectory(path);
Debug.Log("CreateFile");
#if UNITY_EDITOR
AssetDatabase.Refresh();
#endif
}
//把json数据写到txt里
StreamWriter sw;
if (File.Exists(fileName))
{
//如果文件存在,那么就向文件继续附加(为了下次写内容不会覆盖上次的内容)
sw = File.AppendText(fileName);
Debug.Log("appendText");
}
else
{
//如果文件不存在则创建文件
sw = File.CreateText(fileName);
Debug.Log("createText");
}
sw.WriteLine(strB);
sw.Close();
#if UNITY_EDITOR
AssetDatabase.Refresh();
#endif
}.
为了大家可以更形象理解一下。我用GUI了
void OnGUI()
{
GUILayout.BeginArea(new Rect(0, 0, Screen.width, Screen.height));
GUILayout.BeginHorizontal();
GUILayout.FlexibleSpace();
GUILayout.BeginVertical();
GUILayout.FlexibleSpace();
if (GUILayout.Button("ReadJson"))
{
ReadJson();
}
if (GUILayout.Button("ReadJsonFromTXT"))
{
ReadJsonFromTXT();
}
if (GUILayout.Button("WriteJsonAndPrint"))
{
WriteJsonAndPrint();
}
if (GUILayout.Button("WriteJsonToFile"))
{
WriteJsonToFile(filePath,fileName);
}
GUILayout.FlexibleSpace();
GUILayout.EndVertical();
GUILayout.FlexibleSpace();
GUILayout.EndHorizontal();
GUILayout.EndArea();
}
首先我的工程如下:
接着我们把TestJson脚本赋给摄像机
我们点击run一下
你便会在游戏面板里看到有4个按钮了
我们点击ReadJson按钮一下
在相印的控制台里打印如红色框内
我们clear一下控制台,clear玩了如下所示,红色区域里什么也没有了
我们点击一下ReadJsonFromTXT按钮,点完后发现打印的结果和txt里的内容一模一样,呵呵成功了
我们再clear一下控制台,之后点击一下WriteJsonAndPrint按钮
打印结果如下:
我们接着clear一下控制台,点击一下WriteJsonToFile按钮
我们发现在工程面板里多出来了一个文件夹和文本文件,而且控制台打印的结果和文本里的内容一样哟!o(∩_∩)o
好了,这节讲完了。不知道大家清楚没,欢迎留言。一起学习,一起进步。
请保证工程里面已经加入了LitJson.dll
服务器上JSON的内容
[{"people":[
{"name":"fff","pass":"123456","age":"1", "info":{"sex":"man"}},
{"name":"god","pass":"123456","age":"1","info":{"sex":"woman"}},
{"name":"kwok","pass":"123456","age":"1","info":{"sex":"man"}},
{"name":"tom","pass":"123456","age":"1","info":{"sex":"woman"}}
]}
]
复制代码
LoadControl_c代码:
using UnityEngine;
using System.Collections;
using LitJson;
public class LoadControl_c:MonoBehaviour
{
private GameObject plane;
public string url = "http://127.0.0.1/test2.txt";
// Use this for initialization
void Start()
{
StartCoroutine(LoadTextFromUrl());
//StartCoroutine(DoSomething());
//Book book = new Book("Android dep");
//InvokeRepeating("LaunchProjectile", 1, 5);
}
IEnumerator DoSomething()
{
yield return new WaitForSeconds(3);
}
IEnumerator LoadTextFromUrl()
{
if (url.Length > 0)
{
WWW www = new WWW(url);
yield return www;
//string data = www.data.ToString().Substring(1);
string data = www.text.ToString().Substring(1);
// 下面是关键
print(data);
LitJson.JsonData jarr = LitJson.JsonMapper.ToObject(www.text);
if(jarr.IsArray)
{
for (int i = 0; i < jarr.Count; i++)
{
Debug.Log(jarr[i]["people"]);
JsonData jd = jarr[i]["people"];
for(int j = 0; j < jd.Count; j++)
{
Debug.Log(jd[j]["name"]);
}
}
}
}
}
}
原文链接:http://www.360doc.com/content/13/0117/11/10941785_260687703.shtml#
本文内容由网友自发贡献,转载请注明出处:
【wpsshop博客】
推荐阅读
article
【
Unity3D
】动态加载
图片
(批量)_
unity
获取
文件夹
下的
所有
图片
...
动态加载的
图片
存在allTex2d中,若要将其转换成sprite格式并显示,可以用images[i].sprite = ...
赞
踩
article
Unity3D
:
打包
图集
与动态
加载
图集
的两种
方法
_
unity
加载
图集
...
Unity3D
图集
打包
老
打包
方法
新
打包
方法
加载
图集
老
图集
加载
处理新
图集
加载
处理两种
图集
的区别_
unity
加载
图集
uni...
赞
踩
article
unity3d
learn
_
Unity
Learn
Premium
简介:获得
专家
的直接指导...
unity3d
learn
Level up your skills with exclusive access to U...
赞
踩
article
Unity3D
| 经典
小游戏
Battle
City
_
unity
简单
小游戏
案例...
⭐️相关背景:博主在大二暑期接触了
unity
,借鉴实战视频上手花两天复刻了 “坦克大战” 这一经典
小游戏
,发现做游戏这种...
赞
踩
article
【
GitHub
项目
推荐
--
Unity3D
的
练习
项目
】【转载】...
地址:https://github.com/XINCGer/
Unity3D
Training。
Unity3D
的
练习
项目
,...
赞
踩
article
Unity3D
-
GitHub
知识库
(持续更新)
_
unity3d
github
值得学习...
Frameworkhttps://
github
.com/egametang/EThttps://
github
.com/E...
赞
踩
article
unity
3d
——
FPS
游戏制作入门_
unity
fps
屏幕
中心
...
QQ 1285575001Wechat M010527技术交流 QQ群599020441纪年科技aming#1 场景搭建...
赞
踩
article
【
Unity3D
】
游戏
常用点整理-飞机
射击类
游戏
_
transform
spawnpos
...
1)飞机控制在有限的范围内上下左右移动public class Boundary { public float xMin...
赞
踩
article
Unity3D
FPS
Game
:
第一人称
射击
游戏
(一)_
unity
fps
游戏
...
耗时一周制作的
第一人称
射击
游戏
,希望能帮助到大家!文章目录
游戏
展示资源代码AnimatorSetup.csFadeInO...
赞
踩
article
Unity3D
太空射击
游戏
学习笔记_
perspective
box
colider
...
Unity4.3
游戏
开发项目实战(龚老师编著)第二章太空射击 1、摄像头:透视投影Perspective和正交投影Ort...
赞
踩
article
Unity3d
--
打靶游戏_
unity
打靶...
游戏内容要求:1.靶对象为 5 环,按环计分;2.箭对象,射中后要插在靶上增强要求:射中后,箭对象产生颤抖效果,到下一次...
赞
踩
article
Axios
数据
请求
post
与
node
进行传参,
node
中处理
json
_
node
js
axios
ap...
hello,我是杨小宝,学习了几个月的vue终于到了与后台的
数据
交互,但是进行
数据
交互的时候我遇到了一些问题,今天就写一...
赞
踩
article
【
Unity
3D
】Rele
a
se of
inv
a
lid
GC
h
a
ndle
.当
Unity
试图访问已经...
例如,如果你在一个 MonoBeh
a
viour的 OnDestroy 方法中访问了一个已经被卸载的
应用程序
域中的对象,你...
赞
踩
article
【
Unity3D
】
线段
渲染器
LineRenderer
...
LineRenderer
组件用于绘制
线段
,可以调整
线段
条数、端点坐标、颜色、宽度等属性,其属性面板如下:Materia...
赞
踩
article
Unity3D
官方文档
UGUI
的总览
Canvas
和EventSystem的认识_
ngui
有ca...
版本:unity 2017.1 语言:C# 总起:NGUI和
UGUI
都有在用,不过我最常用的还是
UGUI
,相比而言UGU...
赞
踩
article
非常好用的
android
特效
_
android
视频
特效
json
...
各种帮助类汇总:https://github.com/Blankj/AndroidUtilCode常用的 ios 风格 ...
赞
踩
article
【
Unity3D
】物理系统脚本编程_unity
bool
raycast(
vector3
origi...
物理系统脚本编程内容摘取总结自《
Unity3D
脚本编程与游戏开发》(马遥,沈琰)第三章——物理系统脚本编程基础获取刚体组...
赞
踩
article
Unity3D
C#
编程(基础)
_
c#
开发
3d
程序...
如题
_
c#
开发
3d
程序
c#
开发
3d
程序
Unity3D
C#
编程...
赞
踩
article
Unity
3D
——强大的跨
平台
3D
游戏
开发工具
教程_
unity3d
多
平台
...
http://
unity3d
.9ria.com/?p=22众所周知,
Unity
3D
是一个能够实现轻松创作的多
平台
的
游戏
开...
赞
踩
article
【
Unity3D
】
Inspector
界面
属性
显隐控制(条件控制)_
unity
自定义
inspect...
前言(可以不看)早之前写
自定义
GroupLayout的时候就想要有个
Inspector
界面
属性
显隐控制(条件控制)的东西...
赞
踩
相关标签
c#
unity
人工智能
大数据
编程语言
java
github
游戏开发
游戏
lua
unity3d
学习
3d游戏
游戏引擎
数据