首先,找到读取json的插件,在unity官方Asset Store中搜索json .net找到这个导入项目中。
导入之后项目中出现文件夹JsonDotNet就算是成功了。
创建JsonHelper脚本文件。
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using UnityEngine;
public static class JsonHelper
{
public static object ToJson(this string Json)
{
return Json == null ? null : JsonConvert.DeserializeObject(Json);
}
public static string ToJsonStr(this object obj)
{
var timeConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };
return JsonConvert.SerializeObject(obj, timeConverter);
}
public static string ToJson(this object obj, string datetimeformats)
{
var timeConverter = new IsoDateTimeConverter { DateTimeFormat = datetimeformats };
return JsonConvert.SerializeObject(obj, timeConverter);
}
public static T ToObject<T>(this string Json)
{
//var settings = new JsonSerializerSettings() { ContractResolver = new NullToEmptyStringResolver() };
return Json == null ? default(T) : JsonConvert.DeserializeObject<T>(Json);
}
public static List<T> ToList<T>(this string Json)
{
return Json == null ? null : JsonConvert.DeserializeObject<List<T>>(Json);
}
public static JObject ToJObject(this string Json)
{
if (Json.IsValidJson())
{
return Json == null ? JObject.Parse("{}") : JObject.Parse(Json.Replace(" ", ""));
}
else
{
Json = "{\"res\":\" " + Json + "\"}";
return JObject.Parse("{}");
}
}
public static bool IsValidJson(this string strInput)
{
strInput = strInput.Trim();
if ((strInput.StartsWith("{") && strInput.EndsWith("}")) || //For object
(strInput.StartsWith("[") && strInput.EndsWith("]"))) //For array
{
try
{
var obj = JToken.Parse(strInput);
return true;
}
catch (JsonReaderException jex)
{
//Exception in parsing json
return false;
}
catch (Exception ex) //some other exception
{
Debug.Log(ex.ToString());
return false;
}
}
else
{
return false;
}
}
}
使用实例(只列出两个,其他自行探索使用):
直接转化为实体类:
var model = req.ToObject<MCity>();
转化为List<T>:
var jObject = str.ToList<JObject>();