2012-10-25 219 views
0

即时通讯目前正试图反序列化得到了由JavaScript这样bassed JSON:反序列化JSON

window.external.handlemessage(json); 

和其正由C#这样的处理:

public void handlemessage(string json) 
    { 
      JavaScriptSerializer deserializer = new JavaScriptSerializer(); 

      Dictionary<string, object> deserializedDictionary1 = (Dictionary<string, object>)deserializer.Deserialize(json, typeof(object)); 
      Dictionary<string, object> deserializedDictionary2 = deserializer.Deserialize<Dictionary<string, object>>(json); 
      object objDeserialized = deserializer.DeserializeObject(json); 

    } 

的传球作品罚款与纯文本例如,但只是不与json ..

我已经尝试了几个东西,例如我在handlemessage提供的反序列化的例子,但json只是返回无效basi CLY。我试过的其他几个例子也没有做。

我试图用java反序列化json,然后再次序列化它,没有任何结果(因为存在一些缺陷)。

此外,我试图反序列化数据而不知道json结构。

是否有可能通过JavaScript传递json并用c#反序列化它?

+2

那么使用JSON.NET DLL来处理呢? http://james.newtonking.com/pages/json-net.aspx –

+0

所以,'json'的价值是什么,以及什么,如果有的话,'deserializer.DeserializeObject()'return? – millimoose

+0

json.net对我来说真的不是一种选择,因为如果你知道我的意思,我想使用一个没有dll的应用程序。 json的值是:{“text”:“hi”},是 – makkesk8

回答

2

此外,我试图反序列化数据而不知道json结构。

对于要使用C#的dynamic类型:

JavaScriptSerializer js = new JavaScriptSerializer(); 
dynamic v = js.Deserialize<dynamic>("{\"text\" : \"hi\"}"); 

事实上,你可以直到你明白的对象是如何被映射开始有您的所有数据。

+0

如何从v获取数据? – MC9000

+1

'v.text'应该可以工作。请阅读此处:http://msdn.microsoft.com/en-us/library/dd264736.aspx –