c# - 使用 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"
}
我遇到了以下问题:
- 输出中不会识别具有唯一类型的列表。
- 列表将使用方括号而不是大括号打印出来。
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;
}
}
解决方案
你的课看起来不对。您的代码应如下所示:
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
推荐阅读
- css - 自定义 gollum wiki 的布局
- c# - 当 RequiredFieldValidator 存在于 Bootstrap 模式中时,单击事件上的 Asp 按钮不会触发
- xamarin - MainActivity.OnActivityResult(int, Result, Intent)':在 Xamrine 中找不到合适的方法来覆盖
- algorithm - 为什么 BFS 不能将无向图转换为 DAG?
- python - “ValueError:不支持多类格式” roc_auc_score
- javascript - 将多个 SVG 对齐到环绕元素
- java - JavaFX - 后台线程上的 javafx.beans.property 更新
- google-cloud-platform - 将设备从一个注册表复制到另一个 Google IoT Core
- android - 在 Android 7(root)上,libusb_init 失败并显示 LIBUSB_ERROR_OTHER
- swiftui - 在 SwiftUI 中更轻松或更紧凑地实现等待代码