将LitJson转换为Newtonsoft Json以在IOS设备Unity C#上运行

时间:2019-05-08 01:38:06

标签: c# json unity3d json.net litjson

如何在统一c#中将LitJson Json转换为NewtonSoft Json?

示例:

在LitJson

JsonData CJsonData;
cJsonData = JsonMapper.ToObject(www.downloadHandler.text);
Debug.log(cJsonData["reason"].ToString();

//此cJsonData可以包含嵌套数组。

在iOS的Newtonsoft Json中代码如何?

我不想创建类属性,因为从www.donwloadHandler.text返回的内容可能有所不同。这取决于回报。 当使用数据类型为JsonData的LitJson并使用JsonMapper.Tobject时,我可以轻松获取数据,而无需任何其他代码。

*

  

在LitJson中,我们有DataType JsonData,它会自动将其转换为   来自Mapper的关联数组。

*

我希望我可以获取LitJson之类的数据

Debug.log(cJsonData [“ reason”]。ToString();

也许

Debug.log(cJsonData [“ reason”] [“ abc”]。ToString();

也许

Debug.log(cJsonData [“ reason”] [“ cc”] [“ aaa”]。ToString();

但是在newtonsoft json中,我们必须为反序列化对象添加一个类。

在newtonsoft json中:

someclass Json = JsonConvert.DeserializeObject<someclass>(www.donwloadHandler.text);

这我不想要。因为我们需要添加一些类

和这个:

string data = JsonConvert.DeserializeObject(www.downloadHanlder.text);

这也不是我想要的。因为它是字符串,而不是像litjson这样的关联数组。

很清楚吗?

谢谢

1 个答案:

答案 0 :(得分:1)

差不多。无需反序列化即可读取数据,只需使用JObject:

using System;
using Newtonsoft.Json.Linq;

public class Program
{
    public static void Main()
    {
        string json = @"
            {
              ""CPU"": ""Intel"",
              ""Integrated Graphics"": true,
              ""USB Ports"": 6,
              ""OS Version"": 7.1,
              ""Drives"": [
                ""DVD read/writer"",
                ""500 gigabyte hard drive""
              ],
              ""ExtraData"" : {""Type"": ""Mighty""}
            }";

        JObject o = JObject.Parse(json);

        Console.WriteLine(o["CPU"]);
        Console.WriteLine();
        Console.WriteLine(o["Drives"]);
        Console.WriteLine();
        Console.WriteLine(o["ExtraData"]["Type"]);

        Console.ReadLine();
    }
}