2017-09-30 88 views
0

我想在不帶JSON.Net的UWP中使用c#創建json格式的字符串,但我只是不理解如何到達那裏。比方說,我想動態創建下面的JSON:在沒有JSON.Net的情況下在UWP中創建json

[{"id":130},{"id":131},{"id":132},{"id":133},{"id":134}] 

從一切我已閱讀,它似乎我需要一個類定義的json的內容。例如:

class accountTypes 
{ 
    public int id { get; set; } 
    public string type { get; set; } 
} 

從那裏,它似乎我只需要創建類型的列表「accountTypes」,然後將每個「ID」添加到列表中。

List<accountTypes> jsonList = new List<accountTypes>(); 
int numOfChildren = AccountTypesList.Children.Count; 
for (int i = 0; i < numOfChildren; i++) 
{ 
    if (((CheckBox)AccountTypesList.Children[i]).IsChecked == true) 
    { 
     jsonList.Add(new accountTypes() { id = (int)(double)((CheckBox)AccountTypesList.Children[i]).Tag }); 
    } 
} 

雖然我99%肯定的是,上面的代碼是非常有缺陷的,它不會崩潰在我身上,這樣至少是一個開始。我現在正在努力的是如何序列化列表「jsonList」。到目前爲止,我讀過的所有東西都指向JSON.net或JavaScriptSerializer類,而不是Windows.Data.Json。如果我能看到一個關於如何使用Windows.Data.Json序列化json的簡單示例,那麼我至少可以直觀地看到我的列表中發生了什麼,並可以相應地進行糾正。這就是說,我如何使用Windows.Data.Json序列化數組或列表?

+3

你可能是一個嚮導,所有的鑄造 – Jonesopolis

+0

你試過JsonObject:https://docs.microsoft.com/en-us/uwp/api/windows.data.json.jsonobject – Naidu

回答

1

首先,沒有內置的JSON序列化器可以爲您處理所有的映射。這正是JSON.NET爲你做的。因此,你必須採取手動和長遠的方式。

要創建正是這樣的結果:

[{"id":130},{"id":131},{"id":132},{"id":133},{"id":134}] 

您必須使用​​類。例如,通過你的jsonList對象的方法是這樣的:

public string ToJson(List<accountTypes> objectList) 
{ 
    var jArray = new JsonArray(); 
    foreach (var at in objectList) 
    { 
     jArray.Add(ToJson(at)); 
    } 
    return jArray.ToString(); 
} 

而使用此方法來創建你的類對象本身就是一個JsonObject(如手動工序以及):

public JsonObject ToJson(accountTypes at) 
{ 
    var jObj = new JsonObject(); 
    jObj.SetNamedValue("id", JsonValue.CreateNumberValue(at.id)); 
    return jObj; 
} 
相關問題