![](/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.