我正嘗試將基於Web Api的項目轉換爲Servicestack,現在我在將複雜(客戶端)對象圖轉換爲C#動態類時遇到問題(因爲它是複雜和主要用於客戶端我不想創建一個C#表示這一點)。下面是一些剝離代碼(而不是精確的代碼,所以有可能是錯誤):將Web API轉換爲ServiceStack - JObject轉換爲JsonObject
OLD CODE:
[HttpPost]
public HttpResponseMessage Save([FromBody] JObject jsonData)
{
dynamic jsonDataAsDynamic = jsonData;
var test = (JObject)jsonDataAsDynamic.TheComplexObjectGraphStringified;
}
上面的代碼工作沒有問題。
NEW CODE:
[Route("/SomeRoute/Save")]
public class PostRequest
{
public string A { get; set; }
public string B { get; set; }
public string TheComplexObjectGraphStringified { get; set; }
}
public object Post(PostRequest request)
{
var test = JsonObject.Parse(request.TheComplexObjectGraphStringified);
}
注:由於我在Servicestack新手我不(還)知道,如果不JsonObject.Parse一樣強制轉換爲JObject。
我的JavaScript調用:
$.ajax({
type: "POST",
url: <save url>,
data: '{' +
'"A":' + a +
',"B":' + b +
',"TheComplexObjectGraphStringified":' + JSON.stringify(TheComplexObjectGraph) +
'}',
contentType: "application/json",
dataType: "json",
示例數據:
的 'TheComplexObjectGraphStringified' 是將字符串化與JavaScript的內容(在客戶端)(您的關注這是谷歌的數據)後:
{「zoom」:12,「tilt」:0,「overlays」:[{「uniqueid」:1387287972247,「paths」:[[「lat」:52.096898776519055,「lng」:5.655044395378695} 「LAT」:52.093607315804085 「LNG」:5.655044395378695}]]}], 「中心」:{ 「LAT」:52.095253046161574 「LNG」:5.6594110316549 4}}
現在奇怪的是,當這到達服務器屬性'TheComplexObjectGraphStringified'引號被刪除!調試數據:
「{變焦:12,傾斜:0,覆蓋:< ...字符串的其餘部分...>」
正如你所看到的變焦沒有加引號的話(我期待着什麼像「{\」縮放\「:12」
我發現,如果我加入一些使用調試器JsonObject.Parse似乎工作逃脫手工報價
我在做什麼錯
很多很多人感謝,我覺得自己像一個新手,考慮到我的非stringify解決方案。它現在有效!提供的鏈接真的很有用。 – Stackbever
@Stackbever真棒,很高興它的工作。 – Scott