我有幾個不同的 JSON 物件。
拳頭 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"
}
第二個 JSON 物件
"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 物件都不相同。所以我想撰寫一個 C# 類來將這個任何 JSON 物件轉換為 C# 物件。所以你能不能請我一個類來轉換這些 JSON 物件。
目前我正在使用這個類來轉換 Json 物件。但我想把它作為一個動態類
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)
{}
uj5u.com熱心網友回復:
有多種方法可以將 JSON 物件轉換為 C# 清晰物件,這里我將展示幾種方法。
一行代碼
var oMycustomclassname = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(jsonString);
如果您有自己的班級var,請更改為您自己的班級。
使用 JSON.NET
有一種推薦的方法可以將 JSON 轉換為 C# 物件,那就是JSON.NET 查看 github repo 以獲取更多資訊。這是您的案例的示例。
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 = @"{"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"
}";
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);
}
uj5u.com熱心網友回復:
您可以使用 Newtonsoft.Json 庫輕松獲得您的需求。我正在寫下下面的一個例子,看看它。
您收到的物件型別的類:
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的簡單方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/394419.html
