C# 如果我没有';我不知道数据结构?

C# 如果我没有';我不知道数据结构?,c#,json,.net-core,json.net,C#,Json,.net Core,Json.net,如果我没有模型,是否可以将JSON转换为匿名对象 下面是一个模型示例: var json = "{\"firstName\": \"John Doe\", \"lastName\": \"Doe\"}"; var model = new { firstName = "", lastName = "" }; var result = JsonConvert.DeserializeAnonymousType(json, model); //result: { firstName = John Doe

如果我没有模型,是否可以将JSON转换为匿名对象

下面是一个模型示例:

var json = "{\"firstName\": \"John Doe\", \"lastName\": \"Doe\"}";
var model = new { firstName = "", lastName = "" };
var result = JsonConvert.DeserializeAnonymousType(json, model);
//result: { firstName = John Doe, lastName = Doe }
如果我不知道示例中所示的数据结构,如何进行相同的操作

问题是我实际上正在使用一些库,如果我将动态对象作为参数传递,它就不起作用。 我需要使用的唯一方法是传递匿名对象,如:

instance.SomeMethod(new { firstName = "John", lastName = "Doe" })
您可以与
反序列化对象一起使用

var json = "{\"firstName\": \"John Doe\", \"lastName\": \"Doe\"}";      
var result = JsonConvert.DeserializeObject<dynamic>(json);
var firstName = result.firstName;
var json=“{\“firstName\”:\“John Doe\”,\“lastName\”:\“Doe\”}”;
var result=JsonConvert.DeserializeObject(json);
var firstName=result.firstName;
您可以与
反序列化对象一起使用:

var json = "{\"firstName\": \"John Doe\", \"lastName\": \"Doe\"}";      
var result = JsonConvert.DeserializeObject<dynamic>(json);
var firstName = result.firstName;
var json=“{\“firstName\”:\“John Doe\”,\“lastName\”:\“Doe\”}”;
var result=JsonConvert.DeserializeObject(json);
var firstName=result.firstName;

您可以使用
动态
类型,但如果在Xamarin中工作,则需要包含名为
Microsoft.CSharp
的引用

下面是一个例子:

var json = "{\"firstName\": \"John Doe\", \"lastName\": \"Doe\"}";

dynamic x = JsonConvert.DeserializeObject(json);

Console.WriteLine(x.firstname.ToString());

//You'll need to convert to data type especially in boolean, int, float, double
下面是将
object
转换为
json

dynamic x = new ExpandoObject();
x.param1 = "";
x.param2 = "";

string json = JsonConvert.SerializeObject(x);

您可以使用
dynamic
类型,但如果在Xamarin中工作,则需要包含名为
Microsoft.CSharp
的引用

下面是一个例子:

var json = "{\"firstName\": \"John Doe\", \"lastName\": \"Doe\"}";

dynamic x = JsonConvert.DeserializeObject(json);

Console.WriteLine(x.firstname.ToString());

//You'll need to convert to data type especially in boolean, int, float, double
下面是将
object
转换为
json

dynamic x = new ExpandoObject();
x.param1 = "";
x.param2 = "";

string json = JsonConvert.SerializeObject(x);

尝试使用GSon,您应该导入依赖项

尝试使用GSon,您应该使用动态:

var json = "{\"firstName\": \"John Doe\", \"lastName\": \"Doe\"}";      
dynamic result = JsonConvert.DeserializeObject(json);
您还可以在访问该属性之前检查该属性是否存在,并使用以下代码避免崩溃:

var dictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(result .ToString());
if (dictionary.ContainsKey("firstName"))  
//do something with "firstName"
var dictionary=JsonConvert.DeserializeObject(result.ToString());
if(dictionary.ContainsKey(“firstName”))
//用“名字”做点什么
希望它能使用动态:

var json = "{\"firstName\": \"John Doe\", \"lastName\": \"Doe\"}";      
dynamic result = JsonConvert.DeserializeObject(json);
您还可以在访问该属性之前检查该属性是否存在,并使用以下代码避免崩溃:

var dictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(result .ToString());
if (dictionary.ContainsKey("firstName"))  
//do something with "firstName"
var dictionary=JsonConvert.DeserializeObject(result.ToString());
if(dictionary.ContainsKey(“firstName”))
//用“名字”做点什么

希望它能起作用你考虑过吗?问题是:你下一步想做什么?下一行中的代码如何与此对象交互?您想访问任何属性吗?您如何知道该属性的名称?按照下面的建议反序列化到
dynamic
,将生成
JObject
ExpandoObject
是另一个可能适用于您的第三方库的选项,请参阅。在运行时真正创建匿名类型对象非常困难,请参见。您考虑过吗?问题是:下一步要做什么?下一行中的代码如何与此对象交互?您想访问任何属性吗?您如何知道该属性的名称?按照下面的建议反序列化到
dynamic
,将生成
JObject
ExpandoObject
是另一个可能适用于您的第三方库的选项,请参阅。在运行时真正创建匿名类型对象非常困难,请参阅。