2017-11-20 15 views
0

JSONを単純なテキスト形式で返す次の作業コントローラメソッドがあります。ASP.NETコントローラメソッドでJSONを返す

[HttpPost] 
public IActionResult DecodeBarcode(string productCodeScheme, string productCode, string serialNumber, string batch, string expirationDate, int commandStatusCode) { 
    string TextAreaResult = string.Empty; 
    try { 
     TextAreaResult = string.Format("{0} {1} {2}", request.getHttpInformation(), request.getHttpWarning(), request.getHttpResponseCode()); 
    } catch (Exception exc) { 
     TextAreaResult = "Exception: " + exc.Message; 
    } 
    return Json(TextAreaResult); 
} 

出力上記の方法が実行された後は、

request.getHttpInformation() is The pack is active 
request.getHttpWarning() is No warning 
request.getHttpResponseCode() is 200 

一方

"The pack is active No warning 200" 

ようになり、私はそうは3種類のキーと値のペアに応答を分割しようとしています私の応答は次のようになります

{ 
    httpInformation: "The pack is active", 
    httpWarning: "No Warning", 
    httpResponseCode: "200" 
} 

return Json(TextAreaResult)コールで追加パラメータを渡すにはどうすればよいですか?

私が好きならば、それは

[HttpPost] 
public IActionResult DecodeBarcode(string productCodeScheme, string productCode, string serialNumber, string batch, string expirationDate, int commandStatusCode) { 
    string TextAreaResult = string.Empty; 
    string TextAreaResultHttpInformation = string.Empty; 
    string TextAreaResultHttpWarning = string.Empty; 
    string TextAreaResultHttpResponseCode = string.Empty; 

    try { 
     TextAreaResultHttpInformation = string.Format("{0}}", request.getHttpInformation()); 

     TextAreaResultHttpWarning = string.Format("{1}}", request.getHttpWarning()); 

     TextAreaResultHttpResponseCode = string.Format("{2}}", request.getHttpResponseCode()); 
    } catch (Exception exc) { 
     TextAreaResult = "Exception: " + exc.Message; 
    } 

    return Json(TextAreaResultHttpInformation, TextAreaResultHttpInformation, TextAreaResultHttpResponseCode); 
} 

を動作しません、次はどのようにキーと値のペアを構築し、JSONとして返すのですか?おそらく、Json方法はこちらに正しい選択ではありませんが、C#に新しいもの、私はあなたが実際にJSONとしてレスポンスを消費したいと仮定すると、JSON

答えて

3

を構築するための他のC#作り付けの方法を知りません、あなたはこれを達成できますあなたは異なるアプローチをしたいなら、あなたは次のようにJsonSerializerを使用することができます

return Json(new 
{ 
    HttpInformation = TextAreaResultHttpInformation, 
    HttpWarning = TextAreaResultHttpWarning, 
    StatusCode = TextAreaResultHttpResponseCode 
}); 
0

を行うことによって:

// Creating BlogSites object 
BlogSites bsObj = new BlogSites() 
{ 
    Name = "test-name", 
    Description = "test-description" 
}; 

// Serializing object to json data 
JavaScriptSerializer js = new JavaScriptSerializer(); 
string jsonData = js.Serialize(bsObj); // {"Name":"test-name","Description":"test-description"} 

あなたはそれをシリアライズそのオブジェクトにクラスとストア値を作成する必要があります。リストがある場合は、そのクラスのListを使用してシリアライズできます。

0

これらのプロパティのラッパークラスを作成して返すことができます。

public class BarcodeResultDto 
    { 
     [JsonProperty("httpInformation")] 
     public string HttpInformation { get; set; } 

     [JsonProperty("httpWarning")] 
     public string HttpWarning { get; set; } 

     [JsonProperty("httpResponseCode")] 
     public int GetHttpResponseCode { get; set; } 
    } 

public IActionResult DecodeBarcode(string productCodeScheme, string productCode, string serialNumber, 
      string batch, string expirationDate, int commandStatusCode) 
     { 
      var barcodeResult = new BarcodeResultDto 
      { 
       GetHttpResponseCode = 200, 
       HttpInformation = "The pack is active", 
       HttpWarning = "No Warning" 
      }; 

      // your code here 
      return Ok(barcodeResult); 
     } 

それとも化するJsonResult

にIActionResultから戻さ値を変更することができます
関連する問題