关于前端:unity解析json-数据

32次阅读

共计 4024 个字符,预计需要花费 11 分钟才能阅读完成。

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);

正文完
 0