【发布时间】:2018-09-20 04:24:03
【问题描述】:
我正在寻找可以在 C# 中使用 JsonWriter 对包含数组的数据进行序列化的东西?
这是我得到的错误:
ExceptionMessage:“不支持的类型:Module.Model.Acl_Entries[]。使用 JsonSerializer 类获取对象的 JSON 表示。路径 'acl_entries'。” 异常类型:“Newtonsoft.Json.JsonWriterException”
这是我的数据:
"author": {
"stakeholder_id": "stkh-a23ee7909d024a21a54fb60d60089c97",
"username": "alex",
"acl_entries": [{
"stakeholder_id": "stkh-f8e80f32aad44df6a7a96b20d4fee340",
"stakeholder_name": "james",
"stakeholder_type_id": "5"
}]
}
}
这是我的控制器:
public class AuthorRequest
{
public Stakeholder author { get; set; }
}
[HttpPut]
[ActionName("PutUpdateStakeholder")]
public string PutUpdateStakeholder(AuthorRequest request)
{
var author = request.author;
List <Stakeholder> list = _repos.PutUpdateStakeholder(author);
//Utils.Log("stakeBasic" + author );
return JsonConvert.SerializeObject(list);
}
这是我的 JsonWriter:
public List<Stakeholder> PutUpdateStakeholder(Stakeholder author)
{
Utils.Log("Update>>>" + author);
string sMsg = "";
StringWriter sw = new StringWriter();
using (JsonWriter writer = new JsonTextWriter(sw))
{
writer.Formatting = Formatting.None;
writer.WriteStartObject();
object obj = null;
object fal = false;
object tr = true;
object val = 0;
writer.WritePropertyName("stakeholder_id");
writer.WriteValue(author.stakeholder_id);
writer.WritePropertyName("username");
writer.WriteValue(author.username);
writer.WritePropertyName("acl_entries"); //array
writer.WriteStartArray();
//writer.WriteStartObject();
writer.WriteValue(author.acl_entries);
//writer.WriteEndObject();
writer.WriteEnd();
writer.WriteEndObject();
}
string sParam = "param=" + sw.ToString();
string sResp = "";
Utils.Log("BASIC" + sParam);
List<Stakeholder> list = new List<Stakeholder>();
if (Utils.GenerateRequest("Stakeholder", sParam, "PUT", ref sResp))
{
Utils.deserializeStakeholderResp(sResp, ref list, ref sMsg);
//Utils.Log("BASIC" + sParam);
}
else
{
sMsg += sResp;
}
return list;
}
所以我的问题是,我如何在 C# 中使用 JsonWriter 序列化包含数组的数据,或者也许有人可以给我一个提示。
【问题讨论】:
-
@vikscool 你能解释一下吗..对不起,我不明白