2017-08-15 3 views
0

私は1.1から2.0に更新したばかりの.Netコアアプリケーションを持っています。 私が抱えている問題は、返されているjsonです。 jsonにはJavaScript Webトークン(JWT)が含まれています。.Net Core 2.0 API、プロパティ名の前後に引用符付きのjsonを返す

私はこのようになりますコントローラのエンドポイント...ブラウザのコンソールで印刷されている場合、このエンドポイントからの応答は次のようになります1.1バージョンの下で

[Microsoft.AspNetCore.Mvc.Route("getToken")] 
    [Microsoft.AspNetCore.Authorization.AllowAnonymous] 
    public IActionResult Post([Microsoft.AspNetCore.Mvc.FromBody] ApplicationUser applicationUser) 
    { 
      var authTokenJson = _authTokenService.GetTokenJson(_jwtOptions, applicationUser); 
      return Ok(authTokenJson.Result); 
    } 

...

enter image description here

を持っています

2.0にアップグレードすると、次のようになります。

enter image description here

プロパティ名は引用符で囲まれています。これにより、オブジェクトを処理しようとしているフロントエンドのAngularJSアプリケーションに問題が発生します。

これがなぜ起こり、どのように修正されるのか誰にも分かりますか?

+5

* "プロパティ名の前後にクォート付きのjsonを返すNet 2.0コアAPI" * Good!それは有効なJSONです。最初のスクリーンショットで見ているのはJSONではなく、解析されたオブジェクトです。あなたの2番目のスクリーンショットはおそらくJSON(文字列内)ですが、それを伝えるのは難しいです。それはあなたが見つけ出す必要があります:なぜそれはもはや解析されていないのですか? –

答えて

3

ご意見ありがとうございます。私は、1.1形式で、私は...フロントエンドでこれをやって離れ

this.currentToken = <string>response.json().access_token; 

を取得することができたことを発見したが、新しいフォーマットで、私は今のような.parse呼び出しを追加する必要が

これ...

this.currentToken = <string> JSON.parse(response.json()).access_token; 

これは現在、期待どおりに動作します。

1

asp.core .NET 1.1

[HttpPost] 
    public async Task<IActionResult> PostAsync([FromBody]GraphQLQuery query) 
    { 
     ... 
     var json = _writer.Write(result); 
     var rr = new ObjectResult(json) { StatusCode = (int)httpResult }; 
     return rr; 
    } 

asp.core .NET 2.0

[HttpPost] 
    public async Task<IActionResult> PostAsync([FromBody]GraphQLQuery query) 
    { 
     ... 
     var json = _writer.Write(result); 
     dynamic obj = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(json); 
     var rr = new ObjectResult(obj) { StatusCode = (int)httpResult }; 
     return rr; 
    } 

これらの機能の両方は、それぞれのプラットフォーム上で同じ結果を返しました。 1.1のバージョンではjsonの文字列がjsonとして解釈されていましたが、これは動的に変更する必要がありました.2.0では単なる文字列です。

関連する問題