![](/img/trans.png)
[英]Best Place to manage shared API calls to 3rd party application inside my asp.net mvc
[英]Returning JSON string from 3rd party API in ASP.Net MVC controller
我在控制器中包装了第三方API(由于必须跳过安全环),该API返回JSON字符串。
我对JSON字符串做了一些小的更改,并希望返回该字符串。
我没有用JSONResult做到这一点的方法,因为它需要一个对象,并且返回的JSON字符串将作为字符串发送回去。
我是否坚持使用诸如ContentResult之类的东西?
JSONLint.com说修改后的JSON有效。 它从...开始
[{"Acknowledgment Start Date":null,"Additional Location Details":null,"Area Code":null,"Assign To Vendor":"No",...
如果我使用Newtonsoft.Json.JsonConvert(),它将对我的JSON字符串执行此操作...
[[[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],...
如果我使用JavaScriptSerializer,我会再次得到这个...
[[[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],...
我怀疑问题的一部分是JSON字符串中的空值。
还有其他解决方案吗? 使用我不知道的ContentResult是否有问题?
Newtonsoft.Json.JsonConvert()
序列化一个对象,但不解析 (也称为反序列化)该对象。 当您调用Newtonsoft.Json.JsonConvert(jsonString)
,您正在说的是“将此JSON字符串序列化为JSON”。 因此,您得到一个时髦的结果。
您可以解析 JSON,然后进行修改,然后再次进行序列化 。 例如:
var myObject = Newtonsoft.Json.DeserializeObject<POCOClass>(jsonString);
myObject.Whatever = "123";
//... etc.
当然,在定义了POCO类之后,这是这样的:
public class POCOClass {
[JsonProperty(PropertyName = "Acknowledgment Start Date")]
public string AcknowledgmentStartDate { get; set; }
// etc.
}
然后,完成后,将其序列化回:
jsonString = Newtonsoft.Json.JsonConvert(myObject) // or Newtonsoft.Json.SerializeObject(myObject)
经过仔细检查,我有了一些认识。
第一个是输出的JSON无效,因为引用的标识符包含空格和冒号。 例如,这个从上面。
... ,"Additional Location Details":null, ...
虽然我怀疑这是问题的根源,但我没有时间编写解析器以使其适合JSON。
我会回来并写一个工具来适当地清理混乱,但是现在我正在使用另一种方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.