Marketo-批量API序列化的响应

问题描述

我正在尝试使用Marketo中的批量导入API端点来获取与Marketo中我warnings的批量作业相关的failurescreated

这些作业的输出表示为ObservableOfInputStreamContent,但是这些端点的响应返回一个csv字符串(带有标头列),而不是JSON对象。为了解决这个问题,我们将生成的swagger文件Marketo提供的swagger定义文件一起使用。这些生成的c#客户端文件具有ObservableOfInputStreamContent对象,但这是一个空对象。我不确定这是故意的,还是Marketo方面的错误生成文件将尝试使用Newtonsoft.Json.JsonConvert.DeserializeObject<ObservableOfInputStreamContent>(responseText,JsonSerializerSettings);反序列化对ObservableOfInputStreamContent的API响应。

反序列化API响应的生成代码

var responseText = await response.Content.ReadAsstringAsync().ConfigureAwait(false);
try
{
    var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject<T>(responseText,JsonSerializerSettings);
    return new ObjectResponseResult<T>(typedBody,responseText);
}
catch (Newtonsoft.Json.JsonException exception)
{
    var message = "Could not deserialize the response body string as " + typeof(T).FullName + ".";
    throw new ApiException(message,(int)response.StatusCode,responseText,headers,exception);
}

问题之一是API不会返回以(例如)开头的JSON:

address,city,country,123 lane,new york,USA
745 street,USA

调用将由于以下原因返回此错误

Newtonsoft.Json.JsonReaderException:解析值时遇到意外字符:路径”,第0行,位置0。

第二个问题是ObservableOfInputStreamContent生成文件中被定义为一个空对象。因此,如果API响应是有效的JSON,我认为它不会知道如何转换为空的ObservableOfInputStreamContent对象。关于生成代码的好消息是,它为我提供了扩展ObservableOfInputStreamContent的选项,因为它被定义为partial类。

[System.CodeDom.Compiler.GeneratedCode("njsonSchema","10.1.11.0 (Newtonsoft.Json v11.0.0.0)")]
public partial class ObservableOfInputStreamContent
{

}

也就是说,我可以使用JsonSerializerSettings解决此问题吗?我可以扩展ObservableOfInputStreamContent类以容纳字符串属性,然后创建自己的JsonConverter并将API返回的字符串转换为新的ObservableOfInputStreamContent吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)