Parse.com进入jsonstring并返回

时间:2015-08-21 10:00:10

标签: c# json parse-platform unity3d

我正在使用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' to Parse.ParseObject&#39;。一个   存在显式转换(您是否错过了演员?)

希望在此事上提供帮助并提前感谢: - )

2 个答案:

答案 0 :(得分:0)

可能有其他方法可以做到这一点,但我们使用的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; }
}

长话短说,定义你正在序列化为适当的类,它会起作用。

答案 1 :(得分:0)

以下是您需要添加以修复所提供示例的示例。你基本上只需要在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);    
    }
}