[英]How do I generate specific JSON output from VB.Net?
作為使用VB.Net 2015社區的VB.Net程序員,我遇到了需要轉換為VB的C#項目,但是這次我不明白我在使用什么。 我正在使用的網站服務會返回並期望JSON / JOBJECTS結構,例如:
var token = new {
iss = PARTNERID,
product = "twpemp",
sub = "partner",
siteInfo = new {
type = "id",
id = SITEID
},
exp = (Int32)DateTime.UtcNow.Add(new TimeSpan(0, 4, 30)).Subtract(new DateTime(1970, 1, 1)).TotalSeconds
};
一個在線轉換器將其轉換為:
Dim EPochTime = DateTime.UtcNow.Add(New TimeSpan(0, 4, 0)).Subtract(New DateTime(1970, 1, 1)).TotalSeconds
Dim Token = New With {
Key .iss = AccNumber,
Key .product = "twppartner",
Key .sub = "partner",
Key .siteInfo = New With {
Key .type = "id",
Key .id = Site},
Key .exp = EPochTime
}
我需要動態創建這種類型的結構,因為“鍵名”和值根據返回的內容和需要發回的內容而改變。 例如,根據上方的站點ID,返回的結構可能包含以下內容:
"Results": [
{
"RecordNumber": 000001,
"EmployeeCode": "0001",
"FirstName": "John",
"MiddleName": "A",
"LastName": "Dow",
"Designation": "Worker",
"Home1": "Press",
},
{
"RecordNumber": 000002,
"EmployeeCode": "0002",
"FirstName": "Jane",
"MiddleName": "b",
"LastName": "Dow",
"Designation": "Helper",
"Home1": "Office",
}
}
對於下一個客戶端,我提交了一個查詢,最終可能需要更新:
"Results": [
{
"RecordNumber": 12345,
"EmployeeCode": "231",
"FirstName": "Erick",
"MiddleName": "G",
"LastName": "Smith",
"Department": "Electrial",
},
{
"RecordNumber": 732456,
"EmployeeCode": "853",
"FirstName": "Fred",
"MiddleName": "W",
"LastName": "Kerber",
"Department": "Electrial",
}
}
兩者之間的區別是一個具有“部門”,而另一個則沒有。 此結構根據第一個調用的siteID進行更改。
我的主要問題是如何在VB.NET中動態創建類似這樣的東西,其次,這種東西到底叫什么? 我稱其為缺少更好的單詞的結構。
如果您希望在JSON中輸出這些內容時更具靈活性,則有兩種方法:
1)您可以使用Dictionary<string,object>
代替動態類型。 使用字典方法,您可以在運行時添加(或排除)屬性。 JSON序列化器將以與您序列化動態類型相同的方式輸出。
var dict = new Dictionary<string, object>() { { "key1", "value1"} };
dict["key2"] = DateTime.Now();
dict["key3"] = 1234567;
if (someCondition){
dict["key4"] = new Dictionary<string, object>() { { "key5", "value5"}, { "key6", "value6"}};
}
2)您可以創建一個具有JSON結構可能包括的所有可用屬性的類。 對於數字類型的可選屬性,請將其設置為可空:
public class Qwijibo
{
public int? RecordNumber {get;set;}
public string EmployeeCode {get;set;}
public string FirstName {get;set;}
public string MiddleName {get;set;}
public string LastName {get;set;}
public string Designation {get;set;}
public string Home1 {get;set;}
public string Department {get;set;
}
以上課程可能在您介紹的兩種情況下都適用。 您沒有為其分配值的屬性將在JSON中序列化為null
。 只要您要傳輸的內容不會掛在null
值上,您就可以繼續使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.