2016-05-05 2 views
1

У меня есть этотПреобразование объектов JSON в C# строки

[ 
    {"type":"knife","knifeNO":"1","knifeName":"Shadow Daggers | Crimson Web","knifeEx":"Field Tested","knifeFv":" 0.3297","price":"42 keys","inspect":"steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198041444572A6024013354D17188164719027219402"}, 
    {"type":"knife","knifeNO":"2","knifeName":"Shadow Daggers | Urban Masked","knifeEx":"Field Tested","knifeFv":" 0.1972","price":"free","inspect":"steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198033359234A6046089123D2785026076714870254"}, 
    {"type":"gun","gunNo":"1","gunName":"StatTrak™ P90 | Trigon","gunEx":"Battle-Scarred","gunFv":"0.7393","price":"free","inspect":"steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198033359234A6042004711D7065101632830923871"}, 
    {"type":"gun","gunNo":"2","gunName":"M4A1-S | Atomic Alloy","gunEx":"Minimal Wear","gunFv":"0.1102","price":"2 keys","inspect":"steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198041444572A5899345580D13988253999937991086"} 
] 

.json файл (JSON массив объектов), и я хочу, чтобы тянуть за файл пары значений (например, типа: «нож») и сделать их C#, поэтому я могу использовать их в одном проекте, над которым я работаю! Но я не могу заставить его работать, и я много пробовал!

Не мог бы кто-нибудь мне помочь?

+4

Это не то, как работает StackOverflow. Покажите свою лучшую попытку, и мы поможем вам улучшить ее, пока она не сработает. – nvoigt

ответ

2

Поскольку вы имеете дело с несколькими разностных классами объектов (то есть орудий и ножи), которые имеют различные свойства, вы могли бы рассмотреть возможность сериализации их как dynamic объектов и использовать их таким образом с помощью метода DeserializeObject<T>() выставленного Json.NET:

using Newtonsoft.Json; 

// Example of your JSON Input 
var input = "{your-huge-array-here}"; 
// Serialized weapons 
var weapons = JsonConvert.DeserializeObject<dynamic[]>(input); 
// Go through each type as expected 
foreach(dynamic gun in weapons.Where(w => w.type == "gun")) 
{ 
    Console.WriteLine("Gun Number: {0}, Gun Name: {1}",gun.gunNo,gun.gunName); 
} 
foreach(dynamic knife in weapons.Where(w => w.type == "knife")) 
{ 
    Console.WriteLine("Knife Number: {0}, Knife Name: {1}",knife.knifeNO,knife.knifeName); 
} 

в зависимости от того, что вам нужно, вы можете изменить содержимое вашего foreach петли на самом деле заполнить строки, создавать свои собственные классы и т.д.

Пример

Вы можете see a very basic demonstration of this here и пример вывода, который вы указали ниже:

enter image description here

+0

Хорошо. У вас есть опечатки, которые вы, вероятно, хотите исправить. knive.kniveNo должен быть knife.kniveNo. gun.gunNo должно быть gun.gunNo – user3885927

+0

Спасибо. Это было немного запутанно в отношении свойств, которые были правильными, поскольку некоторые из них были «НЕТ», а другие были «Нет». Я соответствующим образом скорректировал ответ. –

+0

Спасибо, что сработал! ты лучший! –