2016-10-06 65 views
2

我在两个应用程序之间发送数据时遇到问题。我使用此代码序列数据,以JSON在C#:在C#中序列化为JSON并在TS中反序列化

public static string SerializeToJson<T>(this T obj) 
{ 
    DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType()); 
    MemoryStream ms = new MemoryStream(); 
    serializer.WriteObject(ms, obj); 
    byte[] array = ms.ToArray(); 
    return Encoding.UTF8.GetString(array, 0, array.Length); 
} 

,然后我这个使用socket通信发送到在打字稿实现我的第二个应用程序。我反序列化使用:

JSON.parse 

功能,它工作正常,但如果数据是例如8211特殊字符“ - ”它抛出异常

SyntaxError: Unexpected token in JSON at position 907 

也许是不同的编码,序列化问题和反序列化,但我不知道在JSON.parse中使用哪种编码。

任何人都可以帮到我吗?

+3

你能提供json导致错误的例子吗? – eocron

回答

0

我解决了这个问题,使用转换为base64我的字符串,然后解码它在我的第二个应用程序。

2

另一种方法是使用Newtonsoft Json.Net(可从nuget获得)。 它很容易使用,非常强大。

public static string SerializeToJson<T>(this T obj) 
{ 
    return JsonConvert.SerializeObject(obj); 
} 

而且你甚至可以添加一些格式或你想要的东西。