【发布时间】:2017-04-26 14:45:20
【问题描述】:
我需要一些使用 .NET/Newtonsoft JsonConvert.SerializeObject 方法的 JSON 序列化方面的帮助。我有一个用于存储出站变量的类,称为 JSONVars。
我的问题是关于如何处理以下示例中的“答案”变量。
名字和姓氏在循环中总是有一个返回,所以这很容易。然而,答案部分可能在一个循环中有多个返回。
理论上的出站 JSON 字符串如下所示:
{
"FirstName" : "John",
"LastName" : "Doe",
"FavoriteVacation" : "Beach",
"FavoriteState" : "FL"
.....
}
用“...”表示循环中的 1 到 n 个可能的返回值。
如您所见,我发送 JSON 字符串的地方需要将所有内容放在一个以逗号分隔的字符串中,该字符串格式正确,因此我无法将 Answer 块作为 JSON 数组发送,像这样(它会失败):
{
"FirstName" : "John",
"LastName" : "Doe",
"Answers" : [
"FavoriteVacation" : "Beach",
"FavoriteState" : "FL" .....
}
如何调整它以便我可以“添加”到 json 序列化字符串 1 到 n 个“答案”块?
这是我的代码:
public class JSONVars
{
public string FirstName;
public string LastName;
//??? public string Answer;
}
static void Main(string[] args)
{
foreach (var objReturn in objlst)
{
JSONVars jsonvars = new JSONVars();
jsonvars.FirstName = objReturn.FirstName;
jsonvars.LastName = objReturn.LastName;
foreach (var answerobj in objReturn.SurveyAnswers)
{
if (answerobj.Vacation != null)
{
foreach (var answerobjVaca in answerobj.Vacation)
{
//???????
//answerobjVaca.QuestionText;
//answerobjVaca.AnswerText;
}
}
}
var jsonHolder = JsonConvert.SerializeObject(jsonvars);
}
}
jsonHolder var 是发送到外部服务的内容,需要正确序列化以进行 JSON 传输。
请注意一些代码(如 objReturn 的填充方式)为简洁起见而省略了。
【问题讨论】:
-
如果您需要动态添加或删除属性,请使用
Dictionary<string, object>而不是JSONVars类。