【问题标题】:Parse.com into jsonstring and back将.com 解析为 jsonstring 并返回
【发布时间】:2015-08-21 10:00:10
【问题描述】:

我正在使用 PushWoosh 发送自定义数据,并希望能够将 ParseObject 从一个用户发送到另一个用户。据我所知,这只有在我首先将 ParseObject 转换为 jsonstring 然后在检索时将其转换回 ParseObject 时才有可能。

我尝试过使用 newtonsoft、miniJson 和简单的 json,但没有成功。

首先...这可以实现吗?如果可以...如何实现?

ParseObject test = new ParseObject("jsontest");

test["gameid"] = "12345";
test["player"] = "hanson";

string parsetoJson = JsonConvert.SerializeObject(test); 
Debug.Log ("ParseJson: "+parsetoJson);
//Returns: ParseJson: [{"Key":"gameid","Value":"12345"},{"Key":"player","Value":"hanson"}]

ParseObject test2 = new ParseObject("jsontest");

test2 = JsonConvert.DeserializeObject<ParseObject>(parsetoJson);
Debug.Log ("ParseBack: "+test2.Get<string>("gameid"));

这给出了这个错误:

无法隐式转换类型object' toParse.ParseObject'。一个 存在显式转换(您是否缺少演员表?)

希望在这件事上得到帮助,并在此先感谢 :-)

【问题讨论】:

  • 看来你需要JsonConvert.DeserializeObject&lt;ParseObject&gt;(parsetoJson);
  • 我更改了它,现在我收到此错误:异常:无法创建和填充列表类型 Parse.ParseObject。
  • ParseObject 是你写的类吗?把它粘贴进去。(因为你的'新'构造函数调用显示了一些需要的参数......可能有一种方法,但我认为json.net在你解析你的json时不能轻易调用构造函数,这需要是一个愚蠢的类)

标签: c# json parse-platform unity3d


【解决方案1】:

可能还有其他方法可以做到这一点,但我们使用的json.net方式是:

string json = @"{
  'Name': 'Bad Boys',
  'ReleaseDate': '1995-4-7T00:00:00',
  'Genres': [
    'Action',
    'Comedy'
  ]
}";

Movie m = JsonConvert.DeserializeObject<Movie>(json);

您当然还需要在本地定义要反序列化的类,例如:

public class Movie {
  public string Name { set; get; }
  public DateTime ReleaseDate { set; get; }
  public List<string> Genres { set; get; }
}

长话短说,将您要序列化的内容定义为适当的类,它会起作用。

【讨论】:

    【解决方案2】:

    这是一个示例,说明您需要添加以修复您提供的示例。您基本上只需要创建一个按照预期的 json 结构构建的类。

    using UnityEngine;
    using Newtonsoft.Json;
    
    public class JsonThings : MonoBehaviour
    {
        public class ParseObject
        {       
            [JsonProperty]
            public int gameId;
    
            [JsonProperty]
            public string player;
    
            public ParseObject(string name)
            {
    
            }
        }
    
        // Use this for initialization
        void Start () 
        {
            ParseObject test = new ParseObject("jsontest");
            test.gameId = 12345;
            test.player = "hanson";
    
            string parsetoJson = JsonConvert.SerializeObject(test);
            Debug.Log("ParseJson: " + parsetoJson);
            //Returns: ParseJson: [{"Key":"gameid","Value":"12345"},{"Key":"player","Value":"hanson"}]
    
            ParseObject test2 = new ParseObject("jsontest");
    
            test2 = JsonConvert.DeserializeObject<ParseObject>(parsetoJson);
            Debug.Log("ParseBack: " + test2.gameId);    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-10
      • 2013-10-08
      • 2018-05-16
      • 1970-01-01
      • 2011-09-27
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2015-04-25
      相关资源
      最近更新 更多