2017-01-15 8 views
0

でString.Formatの結果とエスケープされた文字列を使用して、これをしようとしたとき、私はSystem.Format例外を取得:書式の例外

var jsonString = String.Format(@"{ 
    ""searchOptions"": { 
     ""departurePosition"": { ""id"": {0} }, 
     ""arrivalPosition"": { ""id"": 376422 }, 
     ""travelModes"": [ ""Flight"", ""Train"", ""Bus"" ], 
     ""departureDate"": ""2017-01-15"", 
     ""passengers"": [ 
      { 
      ""age"": 12, 
      ""discountCards"": [ ] 
      } 
     ], 
     ""userInfo"": { 
      ""identifier"": ""0.jhvlf8amtgk"", 
      ""domain"": "".com"", 
      ""locale"": ""en"", 
      ""currency"": ""EUR"" 
     }, 
     ""abTestParameters"": [ ] 
    } 
}", departurePosition); 

サーバーへのPOSTリクエストを送信するときに、私はこれを必要とします。

どうすればこの問題を解決できますか?

+2

データを表すクラスを作成し、 'var json = Newtonsoft.Json.JsonConvert.SerializeObject(yourDataInstance)'を使用してjson文字列を作成します。 – Fabio

+0

@Fabioが示唆しているように、Json出力のための保守可能なソリューションを作成する最良の方法は、Newtonsoftのようなライブラリを使用してクラスを作成して有効な出力を作成することです。たとえば、小さなデモ[ここ](https://dotnetfiddle.net/LlJ4LD)を作成しました。 – Icepickle

答えて

2
{} の使用は {}使用 {{をエスケープするので、それはおそらくだ

}}

0

これはただ一つの変数、通常の文字列を連結した場合OfirWは既にこの、 string.Format() giving “Input string is not in correct format”

を共有しますうまく動作します。

var jsonString = 
@"{ ""searchOptions"": { 
     ""departurePosition"": { ""id"": " + departurePosition + @"}, 
     ""arrivalPosition"": { ""id"": 376422 }, 
     ""travelModes"": [ ""Flight"", ""Train"", ""Bus"" ], 
     ""departureDate"": ""2017-01-15"", 
     ""passengers"": [ 
      { 
      ""age"": 12, 
      ""discountCards"": [ ] 
      } 
     ], 
     ""userInfo"": { 
      ""identifier"": ""0.jhvlf8amtgk"", 
      ""domain"": "".com"", 
      ""locale"": ""en"", 
      ""currency"": ""EUR"" 
     }, 
     ""abTestParameters"": [ ] 
    } 
}";