#c# #json #linq
Вопрос:
Я пытаюсь создать строку Json, подобную этой:
{
"StreetLines": [
"101 Test St",
"Ste 100"
],
"City": "Dallas",
"StateOrProvinceCode": "TX",
"PostalCode": "75999",
"CountryCode": "US"
}
Это мой код:
var json = new
{
StreetLines = new
{
toAddress1,
toAddress2
},
new
{
City = toCity,
StateOrProvinceCode = toState,
PostalCode = toZip,
CountryCode = toCountry
}
};
Я получаю сообщение об ошибке «Недопустимый декларатор анонимного члена типа» в нижней части. Я не уверен, в чем проблема, буду признателен за любой совет.
Комментарии:
1. Линии улиц-это массив, а не объект. Кроме того, предполагается, что оставшиеся объекты недвижимости после линий улиц являются частью
json
объекта. См., например, мой пост.2. Это ошибка компиляции. Избавьтесь от
new { }
окружающихCity = toCity...
наборов свойств. Т. е. .var json = new { StreetLines = new [] { toAddress1, toAddress2 }, City = toCity, StateOrProvinceCode = toState, PostalCode = toZip, CountryCode = toCountry }
Ответ №1:
Во-первых, обратите внимание, что StreetLines
это массив JSON, поэтому вам следует использовать массив или список C# :
StreetLines = new[] // notice the "[]"
{
toAddress1,
toAddress2
},
В вашем JSON ключи City
StateOrProvinceCode
и так далее находятся в том же объекте, StreetLines
что и , поэтому в коде C# вам не следует создавать для них новый анонимный класс.
Если бы JSON был таким:
{
"StreetLines": [
"101 Test St",
"Ste 100"
],
"OtherPartsOfTheAddress": {
"City": "Dallas",
"StateOrProvinceCode": "TX",
"PostalCode": "75999",
"CountryCode": "US"
}
}
Тогда вы сможете написать
var json = new
{
StreetLines = new[]
{
toAddress1,
toAddress2
},
OtherPartsOfTheAddress = new // notice the key name
{
City = toCity,
StateOrProvinceCode = toState,
PostalCode = toZip,
CountryCode = toCountry
}
};
Но так как его нет OtherPartsOfTheAddress
, вам просто нужно сделать:
var json = new
{
StreetLines = new[]
{
toAddress1,
toAddress2
},
City = toCity,
StateOrProvinceCode = toState,
PostalCode = toZip,
CountryCode = toCountry
};
Ответ №2:
Ваш код должен выглядеть следующим образом,
var json = new
{
StreetLines = new List<string>
{
toAddress1,
toAddress2
},
City = toCity,
StateOrProvinceCode = toState,
PostalCode = toZip,
CountryCode = toCountry
}
Линии улиц-это набор строк, а город, штат, почта и т. Д. Являются частью основного json.