【问题标题】:Unity c# can't parse the json [duplicate]Unity c#无法解析json [重复]
【发布时间】:2018-10-06 10:14:51
【问题描述】:

我正在尝试从 Web 下载 json 并对其进行解析,然后获取数据并存储它,但是当我从服务器获取 json 时,我无法解析它,因为它为某些值返回 null 虽然它确实有一个值,当我尝试获取特定数据时,它返回实际的空错误。现在我知道这个问题已经被问过很多次了。我确实搜索并尝试了许多解决方案,但似乎对我没有任何效果......我已经使用 json 到 cshap 来生成我的 json 类,以便将数据存储在 jsoncsharp Link

这是我下载的 json

{
"status": "success",
"result": {
"slug": "test",
"id": "26",
"timer_1": "15",
"timer_2": "10",
"pass_1": "aaaa",
"pass_2": "bbbb",
"count": "4",
"port": "66",
"network": "*******************",
"network2": "******************",
"network_api_consumer_key": "******************",
"network_api_consumer_secret": "******************",
"network_api_user_access_token": "******************",
"network_api_user_access_secret": "******************"
 }
 }

这是我存储值的类。这是由 jsoncsharp 生成的

[System.Serializable]
public class Result
{
  public string slug { get; set; }
  public string id { get; set; }
  public string timer_1 { get; set; }
  public string timer_2 { get; set; }
  public string pass_1 { get; set; }
  public string pass_2 { get; set; }
  public string count { get; set; }
  public string port { get; set; }
  public string network { get; set; }
  public string network2 { get; set; }
  public string network_api_consumer_key { get; set; }
  public string network_api_consumer_secret { get; set; }
  public string network_api_user_access_token { get; set; }
  public string network_api_user_access_secret { get; set; }
}

[System.Serializable]
public class root
{
  public string status { get; set; }
  public Result result { get; set; }
}

这是我下载时的方法

 IEnumerator Fetch(string url)
{
    UnityWebRequest www = UnityWebRequest.Get(url);
    yield return www.SendWebRequest();

    if (www.isNetworkError || www.isHttpError)
    {
        Debug.Log(www.error);
    }
    else
    {
        // Show results as text
        Debug.Log(www.downloadHandler.text);
        string jsonString = www.downloadHandler.text;
        root data = JsonUtility.FromJson<root>(jsonString);
        Debug.Log(data.status); //returns text null
        Debug.Log(data.result.port); // returns actual null error 

    }
}

谢谢。

【问题讨论】:

  • 能否指定解析后哪些值变为null?您的 JSON 在最后 4 个 network_api_... 值中似乎也损坏了。
  • 在我的方法中的问题末尾,我在我的调试旁边添加了一条评论。当我调试从服务器下载的内容时,我得到了带有数据的整个 json,但是当我尝试解析它时,我得到空数据,例如 data.status 实际返回 null 而 data.result.port 给出 null 错误
  • 抱歉,已经修复了

标签: c# json unity3d


【解决方案1】:

JsonUtility 不支持属性。你需要删除所有的

{ get;set; }

【讨论】:

  • 我会尝试并回复你
  • lol.... 已修复,现在一切正常.. omg ..... 我为此被困了一整天.. 这是我第一次使用 Unity json 和可能是我最后一次...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-28
相关资源
最近更新 更多