Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将序列化的匿名对象转换回对象?_C#_Asp.net Core_Asp.net Core 3.1 - Fatal编程技术网

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。看见