首页 > 解决方案 > 使用 unity3D 实用程序反序列化包含嵌套对象的 Json 字符串

问题描述

我正在尝试使用此代码基于此 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"
}

我遇到了以下问题:

  1. 输出中不会识别具有唯一类型的列表。
  2. 列表将使用方括号而不是大括号打印出来。
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;
    }    
}

标签: c#json

解决方案


你的课看起来不对。您的代码应如下所示:

public class JsonArgs {

    public string args;        
    public string headers;
    public string origin;
    public string url;
}

要处理空值,需要在属性上添加以下属性:

[DefaultValue("")]

更多关于默认值:

https://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_DefaultValueHandling.htm


推荐阅读