1. 应用 JsonUtility 解析
JsonUtility 是 unity 自带的解析 json 的工具。
1.1 具体应用创立一个解释数据的对象类
须要留神的是须要将每一个办法序列化,应用[System.Serializable]
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public class LaneelDrivePathsData
{
/// <summary>
///
/// </summary>
public string type;
/// <summary>
///
/// </summary>
public List<FeaturesItem1> features;
}
[System.Serializable]
public class Geometry1
{
/// <summary>
///
/// </summary>
public string type;
/// <summary>
///
/// </summary>
public List<Listwww.cungun.com<double>> coordinates;
}
[System.Serializable]
public class Properties1
{
/// <summary>
///
/// </summary>
public string type;
/// <summary>
///
/// </summary>
public int parentLaneElId;
/// <summary>
///
/// </summary>
public int fromLaneElId;
/// <summary>
///
/// </summary>
public int toLaneElId;
}
[System.Serializable]
public class FeaturesItem1
{
/// <summary>
///
/// </summary>
public string type;
/// <summary>
///
/// </summary>
public Geometry1 geometry;
/// <summary>
///
/// </summary>
public Properties1 properties;
}
1.2 获取接送数据:
string jsonTest1 = File.ReadAllText(Application.dataPath + “/Resources/geojson_laneel_drive_paths_1603453072.json”, Encoding.UTF8);
1.3 解析:
LaneelDrivePathsData obj1 = JsonUtility.FromJson<LaneelDrivePathsData>(jsonTest1);
1.4 打印后果:
foreach (var inter in obj1.features)
{Debug.Log("********************************************");
Debug.Log("features.type:" + inter.type);
Debug.Log("=======================================");
Debug.Log("features.properties.type:" + inter.properties.type);
Debug.Log("features.properties.parentLaneElId:" + inter.properties.parentLaneElId);
Debug.Log("features.properties.fromLaneElId:" + inter.properties.fromLaneElId);
Debug.Log("features.properties.toLaneElId:" + inter.properties.toLaneElId);
Debug.Log("=======================================");
Debug.Log("features.geometry.type:" + inter.geometry.type);
foreach (var coor in inter.geometry.coordinates)
{Debug.Log("____________________________________");
foreach (var co in coor)
{Debug.Log("features.geometry.coordinates:" + co);
}
}
}
1.5 查看打印后果:
并没有齐全打印,通过查找看游戏的各种材料发现 JsonUtility 再解析 [[],[]] 这种格局的时候是有问题的,须要有一个“title”才能够。
2. 应用 Newtonsoft.Json 解释 json 数据
因为应用自带的 JsonUtility 是不能满足我业务需要的,于是持续调研发现这个是能够的。持续尝试。
2.1 增加 Newtonsoft.Json
关上 Window->Asset Store-> 搜寻 json-> 抉择 JSON.NET For Unity
2.2 获取数据
string jsonTest = File.ReadAllText(Application.dataPath + “/Resources/geojson_laneel_drive_paths_1603453072.json”, Encoding.UTF8);
2.3 编写数据类
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LaneelDrivePathsDataTest
{
/// <summary>
///
/// </summary>
public string type {get; set;}
/// <summary>
///
/// </summary>
public List<FeaturesItem> features {get; set;}
}
public class Geometry
{
/// <summary>
///
/// </summary>
public string type {get; set;}
/// <summary>
///
/// </summary>
public List<List<double>> coordinates {get; set;}
}
public class Properties
{
/// <summary>
///
/// </summary>
public string type {get; set;}
/// <summary>
///
/// </summary>
public int parentLaneElId {get; set;}
/// <summary>
///
/// </summary>
public int fromLaneElId {get; set;}
/// <summary>
///
/// </summary>
public int toLaneElId {get; set;}
}
public class FeaturesItem
{
/// <summary>
///
/// </summary>
public string type {get; set;}
/// <summary>
///
/// </summary>
public Geometry geometry {get; set;}
/// <summary>
///
/// </summary>
public Properties properties {get; set;}
}
能够应用主动生成工具,将 json 数据增加进去一键生成数据类。地址:
2.4 解析数据
LaneelDrivePathsDataTest obj = JsonConvert.DeserializeObject<LaneelDrivePathsDataTest>(jsonTest);
2.5 打印解析的数据
foreach (var inter in obj.features)
{Debug.Log("********************************************");
Debug.Log("features.type:" + inter.type);
Debug.Log("=======================================");
Debug.Log("features.geometry.type:" + inter.geometry.type);
foreach (var coor in inter.geometry.coordinates)
{Debug.Log("____________________________________");
foreach (var co in coor)
{Debug.Log("features.geometry.coordinates:" + co);
}
}
Debug.Log("=======================================");
Debug.Log("features.properties.type:" + inter.properties.type);
Debug.Log("features.properties.parentLaneElId:" + inter.properties.parentLaneElId);
Debug.Log("features.properties.fromLaneElId:" + inter.properties.fromLaneElId);
Debug.Log("features.properties.toLaneElId:" + inter.properties.toLaneElId);