我正在尝试使用此代码基于此Json字符串序列化unity3D中的对象:
{
"args": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Cache-Control": "max-stale=0",
"Host": "httpbin.org",
"If-Modified-Since": "Mon, 30 Dec 2019 13:08:47 GMT",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
},
"origin": "194.126.25.28, 194.126.25.28",
"url": "https://httpbin.org/get"
}
我遇到了以下问题:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Net;
public class Test01 : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
WebClient wc = new WebClient();
string JsonString = wc.DownloadString("http://httpbin.org/get");
print(JsonString);
JsonArgs Args = new JsonArgs();
//Get The objects from Json String
Args = JsonUtility.FromJson<JsonArgs>(JsonString);
//serialising Json again to print it to the console
string json = JsonUtility.ToJson(Args);
print(json);
}
public class JsonArgs {
//private static Headers HD = new Headers();
public List<string> args = new List<string>();
public List<headers> headers = new List<headers>();
public string origin;
public string url;
}
public class headers {
public string Accept;
public string Accept_Encoding;
public string Accept_Language;
public string Cache_Control;
public string Host;
public string If_Modified_Since;
public string Upgrade_Insecure_Requests;
public string User_Agent;
}
}
因为header
和args
都不是List
的类型。您需要更改JsonArgs
,如下所示:
public class JsonArgs
{
//Removed List of string and create args class
public args args;
//Removed List of headers
public headers headers;
public string origin;
public string url;
}
public class headers
{
public string Accept;
public string Accept_Encoding;
public string Accept_Language;
public string Cache_Control;
public string Host;
public string If_Modified_Since;
public string Upgrade_Insecure_Requests;
public string User_Agent;
}
public class args
{
}
List<string> headers
移至headers
args
类而不是List<string> args
。在您的Json字符串中,args
等于{}
,表示对象没有任何属性!?。因此,从此Json很难定义args
类的属性。但它对于空对象也适用。