在没有JSON.Net的情况下在UWP中创建json

时间:2017-09-30 03:46:41

标签: c# json uwp

我试图在没有JSON.Net的UWP中使用c#创建一个json格式的字符串,但我只是不明白如何到达那里。假设我想动态创建以下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序列化数组或列表?

1 个答案:

答案 0 :(得分:1)

首先,没有内置的JSON序列化程序可以为您处理所有映射。这正是JSON.NET为您所做的。因此,你必须采取手册和漫长的道路。

要准确创建此结果:

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

您必须使用JsonArray课程。例如,将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;
}