C# 如何将序列化的匿名对象转换回对象?
我有以下代码:C# 如何将序列化的匿名对象转换回对象?,c#,asp.net-core,asp.net-core-3.1,C#,Asp.net Core,Asp.net Core 3.1,我有以下代码: //Convert to string var Parameters = new { FName = "John", LName = "Doe" }; string str = Parameters.ToString(); //Convert back to object and read properties dynamic obj = str; string FirstNa
//Convert to string
var Parameters = new { FName = "John", LName = "Doe" };
string str = Parameters.ToString();
//Convert back to object and read properties
dynamic obj = str;
string FirstName = obj.FName;
using Newtonsoft.Json;
public class Person{
public string FName {get;set;}
public string LName {get;set;}
}
public static void Main()
{
var parameters = new Person{
FName = "John",
LName = "Doe"
};
//serialize
var paramsAsString = JsonConvert.SerializeObject(parameters);
//deserialize:
var backToObj = JsonConvert.DeserializeObject<Person>(paramsAsString);
string FirstName = backToObj.FName;
Console.WriteLine(FirstName); //outputs John
}
但这不起作用。如何做到这一点?str
的值为“{FName=John,LName=Doe}”
提前感谢。ToString()方法通常不用于序列化对象。相反,您可能希望使用Newtonsoft.jsonNuget包中的JsonConvert。要反序列化,需要为对象创建一个模型(类)。因此,我将使用以下代码解决此问题:
//Convert to string
var Parameters = new { FName = "John", LName = "Doe" };
string str = Parameters.ToString();
//Convert back to object and read properties
dynamic obj = str;
string FirstName = obj.FName;
using Newtonsoft.Json;
public class Person{
public string FName {get;set;}
public string LName {get;set;}
}
public static void Main()
{
var parameters = new Person{
FName = "John",
LName = "Doe"
};
//serialize
var paramsAsString = JsonConvert.SerializeObject(parameters);
//deserialize:
var backToObj = JsonConvert.DeserializeObject<Person>(paramsAsString);
string FirstName = backToObj.FName;
Console.WriteLine(FirstName); //outputs John
}
使用Newtonsoft.Json;
公共阶层人士{
公共字符串FName{get;set;}
公共字符串LName{get;set;}
}
公共静态void Main()
{
var参数=新人{
FName=“约翰”,
LName=“Doe”
};
//连载
var paramsAsString=JsonConvert.SerializeObject(参数);
//反序列化:
var backToObj=JsonConvert.DeserializeObject(paramsAsString);
string FirstName=backToObj.FName;
Console.WriteLine(FirstName);//输出John
}
如果需要保持对象匿名,只需使用对象:
var Parameters = new { FName = "John", LName = "Doe" };
string str = JsonConvert.SerializeObject(Parameters);
dynamic obj = JsonConvert.DeserializeObject<Object>(str);
string FirstName = obj["FName"]; //outputs John
var Parameters=new{FName=“John”,LName=“Doe”};
string str=JsonConvert.SerializeObject(参数);
动态对象=JsonConvert.DeserializeObject(str);
字符串FirstName=obj[“FName”]//约翰
ToString()方法通常不用于序列化对象。相反,您可能希望使用Newtonsoft.jsonNuget包中的JsonConvert。要反序列化,需要为对象创建一个模型(类)。因此,我将使用以下代码解决此问题:
//Convert to string
var Parameters = new { FName = "John", LName = "Doe" };
string str = Parameters.ToString();
//Convert back to object and read properties
dynamic obj = str;
string FirstName = obj.FName;
using Newtonsoft.Json;
public class Person{
public string FName {get;set;}
public string LName {get;set;}
}
public static void Main()
{
var parameters = new Person{
FName = "John",
LName = "Doe"
};
//serialize
var paramsAsString = JsonConvert.SerializeObject(parameters);
//deserialize:
var backToObj = JsonConvert.DeserializeObject<Person>(paramsAsString);
string FirstName = backToObj.FName;
Console.WriteLine(FirstName); //outputs John
}
使用Newtonsoft.Json;
公共阶层人士{
公共字符串FName{get;set;}
公共字符串LName{get;set;}
}
公共静态void Main()
{
var参数=新人{
FName=“约翰”,
LName=“Doe”
};
//连载
var paramsAsString=JsonConvert.SerializeObject(参数);
//反序列化:
var backToObj=JsonConvert.DeserializeObject(paramsAsString);
string FirstName=backToObj.FName;
Console.WriteLine(FirstName);//输出John
}
如果需要保持对象匿名,只需使用对象:
var Parameters = new { FName = "John", LName = "Doe" };
string str = JsonConvert.SerializeObject(Parameters);
dynamic obj = JsonConvert.DeserializeObject<Object>(str);
string FirstName = obj["FName"]; //outputs John
var Parameters=new{FName=“John”,LName=“Doe”};
string str=JsonConvert.SerializeObject(参数);
动态对象=JsonConvert.DeserializeObject(str);
字符串FirstName=obj[“FName”]//约翰
您可以尝试使用SerializeObject将其更改为json字符串,并使用DeserializeObject将其转换为JObject
var Parameters = new { FName = "John", LName = "Doe" };
string str=JsonConvert.SerializeObject(Parameters);
dynamic obj = JsonConvert.DeserializeObject<JObject>(str);
string FirstName = obj["FName"];
var Parameters=new{FName=“John”,LName=“Doe”};
string str=JsonConvert.SerializeObject(参数);
动态对象=JsonConvert.DeserializeObject(str);
字符串FirstName=obj[“FName”];
您可以尝试使用SerializeObject将其更改为json字符串,并使用DeserializeObject将其转换为JObject
var Parameters = new { FName = "John", LName = "Doe" };
string str=JsonConvert.SerializeObject(Parameters);
dynamic obj = JsonConvert.DeserializeObject<JObject>(str);
string FirstName = obj["FName"];
var Parameters=new{FName=“John”,LName=“Doe”};
string str=JsonConvert.SerializeObject(参数);
动态对象=JsonConvert.DeserializeObject(str);
字符串FirstName=obj[“FName”];
您想反序列化。。。不投。您可以使用各种工具进行反序列化,例如newtonsoft@Jawad“str”中的值不是要使用Newtonsoft反序列化的json。要反序列化。。。不投。您可以使用各种工具进行反序列化,例如newtonsoft@Jawad“str”中的值不是使用Newtonsoft进行反序列化的json。如何在不实际创建类的情况下使用它?我需要使用匿名对象来实现这一点。Newtownsoft.Json的大部分功能现在都内置在.NET framework库中,因此您不需要导入Newtownsoft.Json。了解如何在不实际创建类的情况下使用它吗?我需要使用匿名对象来实现这一点。Newtownsoft.Json的大部分功能现在都内置在.NET framework库中,因此您不需要导入Newtownsoft.Json。看见