繁体   English   中英

C# - 尝试将Dictionary转换为JSON

[英]C# - Trying to convert Dictionary to JSON

这是我的代码:

public class JsonData
{
    public string header;
    public Dictionary<string, string> data = new Dictionary<string, string>();
    public int connectionId;
}

JsonData SendData = new JsonData();
SendData.header = "01";
SendData.data.Add("text", "What is Lorem Ipsum?Lorem ");
SendData.data.Add("accId", "123");
SendData.connectionId = 12;

string json = JsonUtility.ToJson(SendData);

一切都很好,但不知何故,转换后的JSON字符串中的关键data根本不会出现。

string json看起来像这样:

{"header":"01","connectionId":12}

代替:

{"header":"01","data":{"text":"What is Lorem Ipsum?Lorem ","accId":"123"},"connectionId":12}

我的错误在哪里? 为什么我不能收到这样的结果?

使用Newtonsoft.Json获取正确的json。 鉴于您在项目中引用它,请使用命名空间:

using Newtonsoft.Json;

并使用JsonConvert.SerializeObject静态方法:

string json = JsonConvert.SerializeObject(SendData);

来自https://docs.unity3d.com/ScriptReference/JsonUtility.ToJson.html

请注意,虽然可以将原始类型传递给此方法,但结果可能与您预期的不同; 该方法不是直接序列化它们,而是尝试序列化它们的公共实例字段,从而产生一个空对象。 类似地,将数组传递给此方法将不会生成包含每个元素的JSON数组,而是包含数组对象本身的公共字段的对象(其中没有)。 要序列化 数组或基元类型 的实际 内容,必须将其包装在 类或结构中

尝试在属性中公开数据的内容,如下所示。

    public string dataOutput
    {
        get
        {
            return string.Join(",", data.Select(x => string.Format("\"{0}\":\"{1}\"", x.Key, x.Value)));
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM