[英]How to convert any JSON object to C# object
我有几个不同的 JSON 对象。
{
"api": {
"NAME":"CUSTOMER_CREATE",
"QUERY":"CUSTOMER_CREATE"
},
"header" : {
"PartyNumber": "1488002",
"OrganizationName": "Test Organization-02",
"RawPhoneNumber": "9199199199",
"PartyUsageCode": "EXTERNAL_LEGAL_ENTITY",
"Address": [
{
"AddressType": "BILL_TO",
"Address1": "77 College Rd",
"Address2": "London NW10 5SE",
"Address3": "London NW10 5SF",
"Address4": "London NW10 5SG",
"City": "London",
"Country": "GB",
"PostalCode": "NW10 5ES"
}
"api": {
"NAME":"ITEM_CREATE",
"QUERY":"ITEM_CREATE"
},
"header" :
{
"OrganizationCode": "IM_MASTER_ORG",
"ItemClass" : "Root Item Class",
"ItemNumber" : "TEST-01",
"ItemDescription" : "TEST-01",
"ItemStatusValue" : "Active",
"PrimaryUOMValue" : "Each",
"LifecyclePhaseValue" : "Production"
}
我也有很多像这样的 JSON 对象。 所有 JSON object 都不相同。 So I want to write One C# class for convert this any JSON object to C# Object. 所以你能请我一个 class 来转换这些 JSON object。
目前我正在使用这个 class 来转换 Json object。 但我想把它做成动态的 class
public class MHScaleMessage {
//public string api { get; set;}
public Dictionary<string, string> api { get; set;} = new Dictionary<string, string>();
public Dictionary<string, string> header {get; set; } = new Dictionary<string, string>();
public List<Dictionary<string, string>> lineItems { get; set; } = new List<Dictionary<string, string>>();
public static string GetValue(Dictionary<string, string> d, string key, string defaultVal="") {
if (key == null) return defaultVal;
return d.TryGetValue(key, out string val) ? val : defaultVal;
}
public static int GetValueAsInt(Dictionary<string, string> d, string key, int defaultVal=0) {
if (key == null) return defaultVal;
string val = d.TryGetValue(key, out val) ? val : null;
if (val == null) return defaultVal;
return int.TryParse(val, out _) ? 0 : defaultVal;
}
public string ToJsonString() {
var options = new JsonSerializerOptions
{
WriteIndented = true,
IgnoreNullValues = true
};
return System.Text.Encoding.UTF8.GetString(JsonSerializer.SerializeToUtf8Bytes(this, options));
}
public string _ToString() {
string s="";
s += "{"; s += "\n";
s += "api = " + api; s += ","; s += "\n";
s += "header ="; s += "\n";
s += "{";
header.ToList().ForEach(x => s += x.Key + " = " + x.Value + "\n");
s += "}"; s += ","; s += "\n";
s += "lineItems"; s += "\n";
s += "{"; s += "[";
lineItems.ForEach(x => {
x.ToList().ForEach(y => {
s += y.Key + " = " + y.Value;
s += ","; s += "\n";
}
);
});
s += "]"; s += "}"; s += "\n";
s += "}";
return s;
}
}
之后,我使用以下方法执行 API。 这个方法我可以传递参数。
private static MHScaleMessage PerformAPIFunction(MHScaleMessage requestObj)
{}
有多种方法可以将 JSON object 转换为 C# 尖锐的 ZA8CFDE6331BD59EB2AC96F8911ZC46 方法,我将在这里展示几种方法。
一行代码
var oMycustomclassname = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(jsonString);
如果您有自己的 class,则将var
更改为您自己的 class。
使用JSON.NET
There is a recommended way to convert JSON to C# object and that is JSON.NET Have a look at the github repo to get more information. 这是您的案例的示例。
public class User
{
public User(string json)
{
JObject jObject = JObject.Parse(json);
JToken jUser = jObject["api"];
name = (string) jUser["NAME"];
query = (string) jUser["QUERY"];
JToken jUser1 = jObject["header"];
OrganizationCode = (string) jUser1["OrganizationCode"];
ItemClass = (string) jUser1["ItemClass"];
ItemNumber = jUser1["ItemNumber"];
}
public string api_Name{ get; set; }
public string api_Query { get; set; }
public string header_OrganizationCode{ get; set; }
public string header_ItemClass{ get; set; }
}
// Use
private void Run()
{
string json = @"{""user"":
{""name"":""asdf"",""teamname"":""b"",""email"":""c"",""players"":[""1"",""2""]}}";
User user = new User(json);
Console.WriteLine("Name : " + user.name);
Console.WriteLine("Teamname : " + user.teamname);
Console.WriteLine("Email : " + user.email);
Console.WriteLine("Players:");
foreach (var player in user.players)
Console.WriteLine(player);
}
您可以使用 Newtonsoft.Json 库轻松满足您的要求。 我正在写下下面的一个例子,看看它。
Class 对于您收到的 object 类型:
public class Student
{
public int ID { get; set; }
public string Name { get; set; }
}
代码:
static void Main(string[] args)
{
string json = "{\"ID\": 1, \"Name\": \"Abdullah\"}";
Student student = JsonConvert.DeserializeObject<User>(json);
Console.ReadKey();
}
解析 json 的简单方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.