我试图在没有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序列化数组或列表?
答案 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;
}