【问题标题】:Converting json objects in c# strings在 C# 字符串中转换 json 对象
【发布时间】:2016-05-06 01:07:53
【问题描述】:

我有这个

[
    {"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 数组),我想为文件提取值对(如 type:"knife")并将它们设为 C# 字符串,以便我可以在我正在处理的一个项目中使用它们!但我无法让它工作,我尝试了很多东西!

有人可以帮我吗?

【问题讨论】:

  • 这不是 StackOverflow 的工作方式。展示您的最佳尝试,我们将帮助您改进它,直到它奏效为止。

标签: c# json-deserialization package.json


【解决方案1】:

由于您正在处理具有不同属性的多个不同类别的对象(即枪和刀),您可以考虑将它们序列化为 dynamic 对象并通过 JSON.NET 公开的 DeserializeObject<T>() 方法以这种方式使用它们:

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 和您在下面提供的输出示例:

【讨论】:

  • 好一个。您有可能要修复的拼写错误。 knive.kniveNo 应该是knive.kniveNo。 gun.gunNo 应该是 gun.gunNo
  • 谢谢。关于属性的正确性有点令人困惑,因为有些是NO,而另一些是No。我已经相应地调整了答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-28
  • 2018-05-03
  • 2012-07-05
相关资源
最近更新 更多