-3

Есть такой json object:

     \"estimated_value\": {
    \"amount\": 123.3,
    \"currency\": \"EUR\"
  },

Если сделать так:

 Dictionary<string, string> amount = new Dictionary<string, string>();
        amount.Add("amount", price);
        Dictionary<string, string> currency = new Dictionary<string, string>();
        currency.Add("currency", letter.Currency);
        List<Dictionary<string, string>> list = new List<Dictionary<string, string>>();
        list.Add(amount);
        list.Add(currency);

        dict.Add("estimated_value", list);
string postData = JsonConvert.SerializeObject(dict);

То получится массив с квадратными скобками, а мне это не нужно. Нужно

string => 2 object

Но без массива

LoopEx
  • 41
  • Напишите по желаемому json класс и сериализуйте его – tym32167 Aug 23 '19 at 12:49
  • как это сделать? – LoopEx Aug 23 '19 at 12:50
  • все шаги как сгенерировать классы по JSON расписаны тут – tym32167 Aug 23 '19 at 12:56
  • А без класса тут не обойтись? – LoopEx Aug 23 '19 at 13:24
  • ну вы можете хоть string.format использовать (например, $("{myjsonvalue:{value}}"), но класс - самый верный вариант, если вы не хотите потом свой код переделывать на класс. – tym32167 Aug 23 '19 at 13:29

1 Answers1

1

Что за бред вы понаписали?

В заголовке: "Превратить array на c# в object json".
В сообщении: "То получится массив с квадратными скобками, а мне это не нужно".

Из массива в C# естественно получается массив в json. Если вам не нужен массив, то не создавайте его. Элементарно, Ватсон!
На заметку: List<T> - считай, тот же массив.


Вам бы для начала выучить, что такое JSON.
Тот огрызок данных, что вы поместили в начале, не является json - он не валидный.

Но вообще, там просматривается следующая структура: объект, имеющий свойство estimated_value, которое само является объектом с двумя свойствами: amount, currency.
Заметьте: объекты и свойства! Никаких массивов.

Ну и создавайте объекты со свойствами. Можно анонимные объекты.

decimal price = 123.3M;
string letterCurrency = "EUR";

var obj = new
{
    estimated_value = new
    {
        amount = price,
        currency = letterCurrency
    }
};


string postData = JsonConvert.SerializeObject(obj);
Console.WriteLine(postData);

И ещё напутствие: вы пишете на C# - языке со статической типизацией (хотя и динамическая в нём присутствует). В нём принято явно описывать используемые структуры данных. Поэтому создайте неоходимый класс (или классы). Кода для их описания нужно совсем немного. Всяко меньше, чем вы понаписали с Dictionary. А далее IDE будет вам выдавать удобные подсказки при использовании этих классов.