2017-09-30 86 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; 
} 
相关问题