我有一个班级
[Serializable]
public class ExternalAccount
{
public string Name { get;set;}
}
我已将此转换为JSON,如此
{\"Name\":\"XYZ\"}
然后我用base64编码了JSON字符串
然后我通过电汇发送到网络API服务
我收到了base64编码的字符串,现在需要将其反序列化回上面的原始对象(ExternalAccount),所以我先做一个
byte[] byteArray = Convert.FromBase64String(base64EncodedExternalAccount);
下一步是什么?
我已经尝试过以下但是这会返回null ...
using (MemoryStream memoryStream = new MemoryStream(byteArrayToConvert))
{
BinaryFormatter binaryFormatter = new BinaryFormatter();
// set memory stream position to starting point
memoryStream.Position = 0;
// Deserializes a stream into an object graph and return as a object.
return binaryFormatter.Deserialize(memoryStream) as ExternalAccount;
}
任何指针/提示都非常感谢。
答案 0 :(得分:13)
您可以尝试将字节数组转换回字符串(它将与您发送的JSON相同),然后反序列化为ExternalAccount对象。使用Newtonsoft JSON库,以下示例正确显示"某人"在控制台上:
class Program
{
static void Main(string[] args)
{
var account = new ExternalAccount() { Name = "Someone" };
string json = JsonConvert.SerializeObject(account);
string base64EncodedExternalAccount = Convert.ToBase64String(Encoding.UTF8.GetBytes(json));
byte[] byteArray = Convert.FromBase64String(base64EncodedExternalAccount);
string jsonBack = Encoding.UTF8.GetString(byteArray);
var accountBack = JsonConvert.DeserializeObject<ExternalAccount>(jsonBack);
Console.WriteLine(accountBack.Name);
Console.ReadLine();
}
}
[Serializable]
public class ExternalAccount
{
public string Name { get; set; }
}
答案 1 :(得分:2)
你需要从你收到的字节中提取字符串。
ticker
正如预期的那样,您的byte[] byteArray = Convert.FromBase64String(base64EncodedExternalAccount);
string AccountInfo = System.Text.Encoding.UTF8.GetString(byteArray );
字符串中会显示{\"Name\":\"XYZ\"}
。现在你需要AccountInfo
。您可以使用相同的模型Deserialize
。你可以这样做:
ExternalAccount