一、首先导入一个脚本和一个Dll文件

二、分析JsonDataTool工具类

1
2
using UnityEngine;

3
using System.Collections;

4
using System.Collections.Generic;

5
using JsonFx.Json;//注意引入命名空间

6
public class JsonDataTool : MonoBehaviour

7
{

8
9
    /// <summary> 

10
    /// 根据一个JSON,得到一个类

11
    /// </summary>

12
    static public T JsonToClass<T>(string json) where T : class

13
    {

14
        T t = JsonReader.Deserialize<T>(json);

15
        return t;

16
    }

17
18
    /// <summary>

19
    /// 根据一个JSON的文件地址,得到一个类

20
    /// </summary>

21
    static public T AddressToClass<T>(string txtAddress) where T : class

22
    {

23
        TextAsset jsonData = Resources.Load(txtAddress) as TextAsset;

24
        return JsonToClass<T>(jsonData.text);

25
    }

26
27
    /// <summary>

28
    /// 将JSON转换为一个类数组

29
    /// </summary>

30
    static public T[] JsonToClasses<T>(string json) where T : class

31
    {

32
        //Debug.Log(json);

33
        T[] list = JsonReader.Deserialize<T[]>(json);

34
        return list;

35
    }

36
37
    /// <summary>

38
    /// 给Json文件的地址。转换为一个类数组

39
    /// </summary>

40
    static public T[] AddressToClasses<T>(string txtAddress) where T : class

41
    {

42
        TextAsset jsonData = Resources.Load(txtAddress) as TextAsset;

43
        return JsonToClasses<T>(jsonData.text);

44
    }

45
46
}

三、实战解析

1、将json格式文件放进Resources文件夹下

文本内容如下:
1
[

2
    {

3
        "Id": "1001",

4
        "Name": "天煞镯",

5
        "Icon": "天煞镯",

6
        "InventoryType": "Equip",

7
        "EquipType": "Bracelet",

8
        "Price": "4500",

9
        "StartLevel": "4",

10
        "Quailty": "5",

11
        "Damage": "450",

12
        "Hp": "1000",

13
        "Power": "500",

14
        "Des": "风元素桑德兰王子的武器。桑德兰王子被炎魔拉格纳罗斯偷袭杀死之后,被封印于两个头颅之中,由炎魔手下加尔与加顿男爵保管。"

15
    },

16
    {

17
        "Id": "1002",

18
        "Name": "龙渊翅",

19
        "Icon": "龙渊翅",

20
        "InventoryType": "Equip",

21
        "EquipType": "Wing",

22
        "Price": "6000",

23
        "StartLevel": "4",

24
        "Quailty": "5",

25
        "Damage": "300",

26
        "Hp": "2000",

27
        "Power": "300",

28
        "Des": "恶魔猎人就职的要求之一就是搜寻到一种特定的恶魔,把它作为祭品,这样就将恶魔灵魂的一部份束缚于体内。"

29
    },

30
    {

31
        "Id": "1003",

32
        "Name": "天劫戒",

33
        "Icon": "天劫戒",

34
        "InventoryType": "Equip",

35
        "EquipType": "Ring",

36
        "Price": "3000",

37
        "StartLevel": "4",

38
        "Quailty": "5",

39
        "Damage": "200",

40
        "Hp": "1500",

41
        "Power": "100",

42
        "Des": "太阳之井是血精灵一族的堕落的源泉,而精灵一族原本就被称为“众星之子”。想要吸收太阳之井化身安微娜能量的基尔加丹,被玩家与NPC合力所击败。"

43
    },

44
    {

45
        "Id": "1004",

46
        "Name": "血之魂臂铠",

47
        "Icon": "血之魂臂铠",

48
        "InventoryType": "Equip",

49
        "EquipType": "Cloth",

50
        "Price": "7000",

51
        "StartLevel": "4",

52
        "Quailty": "5",

53
        "Damage": "100",

54
        "Hp": "5000",

55
        "Power": "50",

56
        "Des": "法杖随着达拉然的毁灭而损毁,但武器的碎片落入了克尔苏加德之手,他竭力要修复这一法杖。"

57
    },

58
    {

59
        "Id": "1005",

60
        "Name": "龙颚盔",

61
        "Icon": "龙颚盔",

62
        "InventoryType": "Equip",

63
        "EquipType": "Helm",

64
        "Price": "4000",

65
        "StartLevel": "4",

66
        "Quailty": "5",

67
        "Damage": "350",

68
        "Hp": "3000",

69
        "Power": "150",

70
        "Des": "火焰之王,拉格纳罗斯居住在火焰位面,被黑铁矮人召唤所召唤。他所踏足之地,赤脊山脉因此毁灭,形成了黑石山与熔火之心。"

71
    },

72
    {

73
        "Id": "1006",

74
        "Name": "混沌开天斧",

75
        "Icon": "混沌开天斧",

76
        "InventoryType": "Equip",

77
        "EquipType": "Weapon",

78
        "Price": "7500",

79
        "StartLevel": "3",

80
        "Quailty": "5",

81
        "Damage": "1000",

82
        "Hp": "100",

83
        "Power": "900",

84
        "Des": "在土灵和铁矮人之间爆发的第一次战争中,瓦兰奈尔碎裂了。据信这把武器的残片已在战争中遗失。"

85
    },

86
    {

87
        "Id": "1007",

88
        "Name": "天绝项链",

89
        "Icon": "天绝项链",

90
        "InventoryType": "Equip",

91
        "EquipType": "Necklace",

92
        "Price": "3500",

93
        "StartLevel": "3",

94
        "Quailty": "2",

95
        "Damage": "500",

96
        "Hp": "500",

97
        "Power": "420",

98
        "Des": "凯尔萨斯:“你看,我的收藏中有许多武器。” 背景出处不详。"

99
    },

100
    {

101
        "Id": "1008",

102
        "Name": "天泣靴",

103
        "Icon": "天泣靴",

104
        "InventoryType": "Equip",

105
        "EquipType": "Shoes",

106
        "Price": "6000",

107
        "StartLevel": "3",

108
        "Quailty": "2",

109
        "Damage": "200",

110
        "Hp": "400",

111
        "Power": "120",

112
        "Des": "灵魂收割者的名号是由于这把剑在每杀死一个人之后都会吸取他们的灵魂,加强自己的暗影力量。"

113
    },

114
    {

115
        "Id": "1009",

116
        "Name": "灰烬之靴",

117
        "Icon": "灰烬之靴",

118
        "InventoryType": "Equip",

119
        "EquipType": "Shoes",

120
        "Price": "6000",

121
        "StartLevel": "3",

122
        "Quailty": "2",

123
        "Damage": "200",

124
        "Hp": "400",

125
        "Power": "120",

126
        "Des": "风元素桑德兰王子的武器。桑德兰王子被炎魔拉格纳罗斯偷袭杀死之后,被封印于两个头颅之中,由炎魔手下加尔与加顿男爵保管。"

127
    },

128
    {

129
        "Id": "1010",

130
        "Name": "众神之光",

131
        "Icon": "众神之光",

132
        "InventoryType": "Equip",

133
        "EquipType": "Wing",

134
        "Price": "6000",

135
        "StartLevel": "5",

136
        "Quailty": "2",

137
        "Damage": "300",

138
        "Hp": "2000",

139
        "Power": "300",

140
        "Des": "恶魔猎人就职的要求之一就是搜寻到一种特定的恶魔,把它作为祭品,这样就将恶魔灵魂的一部份束缚于体内。"

141
    },

142
    {

143
        "Id": "1011",

144
        "Name": "精灵戒指",

145
        "Icon": "精灵戒指",

146
        "InventoryType": "Equip",

147
        "EquipType": "Ring",

148
        "Price": "3000",

149
        "StartLevel": "5",

150
        "Quailty": "2",

151
        "Damage": "200",

152
        "Hp": "1500",

153
        "Power": "100",

154
        "Des": "太阳之井是血精灵一族的堕落的源泉,而精灵一族原本就被称为“众星之子”。想要吸收太阳之井化身安微娜能量的基尔加丹,被玩家与NPC合力所击败。"

155
    },

156
    {

157
        "Id": "1012",

158
        "Name": "天衣月舞",

159
        "Icon": "天衣月舞",

160
        "InventoryType": "Equip",

161
        "EquipType": "Cloth",

162
        "Price": "7000",

163
        "StartLevel": "5",

164
        "Quailty": "4",

165
        "Damage": "100",

166
        "Hp": "5000",

167
        "Power": "50",

168
        "Des": "法杖随着达拉然的毁灭而损毁,但武器的碎片落入了克尔苏加德之手,他竭力要修复这一法杖。"

169
    },

170
    {

171
        "Id": "1013",

172
        "Name": "圣光之帽",

173
        "Icon": "圣光之帽",

174
        "InventoryType": "Equip",

175
        "EquipType": "Helm",

176
        "Price": "4000",

177
        "StartLevel": "5",

178
        "Quailty": "4",

179
        "Damage": "350",

180
        "Hp": "3000",

181
        "Power": "150",

182
        "Des": "火焰之王,拉格纳罗斯居住在火焰位面,被黑铁矮人召唤所召唤。他所踏足之地,赤脊山脉因此毁灭,形成了黑石山与熔火之心。"

183
    },

184
    {

185
        "Id": "1014",

186
        "Name": "生命之环",

187
        "Icon": "生命之环",

188
        "InventoryType": "Equip",

189
        "EquipType": "Bracelet",

190
        "Price": "4500",

191
        "StartLevel": "5",

192
        "Quailty": "4",

193
        "Damage": "450",

194
        "Hp": "1000",

195
        "Power": "500",

196
        "Des": "在土灵和铁矮人之间爆发的第一次战争中,瓦兰奈尔碎裂了。据信这把武器的残片已在战争中遗失。"

197
    },

198
    {

199
        "Id": "1015",

200
        "Name": "魔音护魂魔杖",

201
        "Icon": "魔音护魂魔杖",

202
        "InventoryType": "Equip",

203
        "EquipType": "Weapon",

204
        "Price": "7500",

205
        "StartLevel": "5",

206
        "Quailty": "4",

207
        "Damage": "1000",

208
        "Hp": "100",

209
        "Power": "900",

210
        "Des": "凯尔萨斯:“你看,我的收藏中有许多武器。” 背景出处不详。"

211
    },

212
    {

213
        "Id": "1016",

214
        "Name": "死亡挂坠",

215
        "Icon": "死亡挂坠",

216
        "InventoryType": "Equip",

217
        "EquipType": "Necklace",

218
        "Price": "3500",

219
        "StartLevel": "5",

220
        "Quailty": "4",

221
        "Damage": "500",

222
        "Hp": "500",

223
        "Power": "420",

224
        "Des": "灵魂收割者的名号是由于这把剑在每杀死一个人之后都会吸取他们的灵魂,加强自己的暗影力量。"

225
    },

226
    {

227
        "Id": "1017",

228
        "Name": "小体力丹",

229
        "Icon": "小体力丹",

230
        "InventoryType": "Drug",

231
        "Price": "1000",

232
        "ApplyValue": "2000"

233
    },

234
    {

235
        "Id": "1018",

236
        "Name": "大体力丹",

237
        "Icon": "大体力丹",

238
        "InventoryType": "Drug",

239
        "Price": "3000",

240
        "ApplyValue": "5000"

241
    },

242
    {

243
        "Id": "1019",

244
        "Name": "黄金宝箱",

245
        "Icon": "黄金宝箱",

246
        "InventoryType": "Box",

247
        "Price": "10000"

248
    }

249
]

2、我们要新建一个类用来存储JSON文本中所有的键
1
using System.Collections;

2
using System.Collections.Generic;

3
using UnityEngine;

4
5
public class Inventory  {

6
    public int Id;

7
    public string Name;

8
    public string Icon;

9
    public string InventoryType;

10
    public string EquipType;

11
    public int Price;

12
    public int StartLevel;

13
    public int Quailty;

14
    public int Damage;

15
    public int Hp;

16
    public int Power;

17
    public string Des;

18
    public Inventory() { }

19
}

3、在另一个脚本中解析Json
1
using UnityEngine;

2
using System.Collections;

3
4
public class GM : MonoBehaviour

5
{

6
    //存放了所有的inventory的属性

7
    public static Inventory[] inventory;

8
    const string addressInventory = "data/Inventory"; 

9
    public static bool isFirst = true;

10
11
    void Awake()

12
    {

13
        if (isFirst)

14
        {

15
            isFirst = false;

16
            inventory = JsonDataTool.AddressToClasses<Inventory>(addressInventory);

17
        }

18
    }

19
20
    void Start()

21
    {

22
        foreach (Inventory p in inventory)

23
        {

24
            if (p.Name == "小体力丹") 

25
            {

26
                Debug.Log(p.Id);

27
            }

28
            if (p.Id==1001)

29
            {

30
                Debug.Log(p.Name);

31
            }

32
        }

33
    }

34
}

将脚本挂在场景中
输出如下

Unity利用JsonFX解析Json格式文本相关推荐

  1. 利用cJSON解析JSON格式

    目录 一.JSON格式 二.cJSON下载 三.cJSON常用函数接口 四.cJSON解析JSON案例 1.一层键值 2.多层键值(两次为例) 3.json数组解析 五.JSON添加数据 (与链表类似 ...

  2. Unity使用JsonFx进行JSON (反)序列

    0. 背景 Unity作为客户端要与服务端通信,最为简单通信协议就是使用Json格式.本文简单讲述Unity使用JsonFx进行Json(反)序列. 序列和反序列是一个互为逆反的过程.反序列化可以帮助 ...

  3. QT解析 JSON 格式的数据

    QT解析 JSON 格式的数据 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON 采用完全独立于语言的文本格式,这些特性使 JSON 成为理想的数 ...

  4. 对JavaScript解析JSON格式数据的理解

    对JavaScript解析JSON格式数据的理解 一.JSON与JavaScript对象的关系 1,JSON的由来: 在21世纪初,Douglas Crockford(Web开发领域最知名的技术权威之 ...

  5. python中json模块_Python使用内置json模块解析json格式数据的方法

    本文实例讲述了Python使用内置json模块解析json格式数据的方法.分享给大家供大家参考,具体如下: Python中解析json字符串非常简单,直接用内置的json模块就可以,不需要安装额外的模 ...

  6. javascript解析json格式的字符串,拼接后显示到表格中

    知识点 解析json格式的字符串 拼接的HTML设置到tbody当中 加载json格式的对象 结果演示 html代码 <!DOCTYPE html> <html><hea ...

  7. C#深入解析Json格式内容

    继上一篇<浅谈C#手动解析Json格式内容>我又来分析加入了一些功能让 这个解析类更实用 本章节最会开放我最终制作成功的Anonymous.Json.dll这个解析库 需要的拿走~ 功能继 ...

  8. java解析sql查询字段_sql解析json格式字段 如何获取json中某个字段的值?

    java将json数据解析为sql语句?小编给你倒一杯热水.可你惦记着其他饮料,所以你将它放置一旁.等你想起那杯水时,可惜它已经变得冰冷刺骨. 图片中是json数据,每个数据的开头都有表名称,操作类型 ...

  9. Java-json系列(一):用GSON解析Json格式数据

    GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用.如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的li ...

  10. python知识:json格式文本;异常处理;字符串处理;unicode类型和str类型转换

    python知识:json格式文本:异常处理:字符串处理:unicode类型和str类型转换 参考文章: (1)python知识:json格式文本:异常处理:字符串处理:unicode类型和str类型 ...

最新文章

  1. 1035 插入与归并
  2. spring boot第八讲
  3. boost::sort模块使用最坏情况进行常规 MSD 基数排序的排序示例
  4. Eureka修改实例名称
  5. 计算机辅助设计受力分析,假肢接受腔的受力分析和计算机辅助设计
  6. 2.6 子窗口赋值给父窗口并关闭子窗口 我的程序猿之路:第十六章
  7. ROR中简单的数据操作
  8. 登顶 GitHub 趋势榜,标星1.8k:200 行 JS 代码让画面人物瞬间消失!
  9. Dubbo 的心跳设计,值得学习!
  10. PRML 1.5 决策论
  11. 《Linux命令行大全》第2版来啦!这一版做了哪些更新?
  12. HBase下载地址(全)
  13. linux系统中权限有几种,Linux系统中三种基本权限
  14. char,varchar,nchar,nvarchar的区别
  15. 原谅我,无法刻骨铭心地记住你
  16. 软件工程——结对作业一(雷镓,司佳宇)
  17. win7 安装ox oracle,windows 2012 R2 core安装0x800f0906 -mgmt-infra出现0x800f0906
  18. MySQL复制表-CREATE SELECT
  19. js实现天降字母打字小游戏
  20. java鸡兔同笼_java 鸡兔同笼问题

热门文章

  1. 对微软winsock PC端开发蓝牙疑问
  2. 三维地理信息可视化·城市篇 技术解析
  3. 用Python分析北京二手房房价
  4. Altium Designer之多层板设置
  5. UE4 Slate二 用UMG思想去理解Slate+Slate编码
  6. OpenCV 调用手机摄像头
  7. 1区SCI潜力刊,中科院分区即将更新,有望冲击2区
  8. 如何带好一支团队,持续更新
  9. Python实战案例:tornado接口vue客户端的堂食点餐系统(中)
  10. java台球游戏_java桌球小游戏项目