c# - 将数据文件分类为给定的类别
问题描述
我目前正在为我托管的游戏服务器设置插件,并且我有一大堆项目,它们的“类别”在 1 和 11 之间,如下面的小片段所示。我之所以这么问,是因为我需要将 200 多个项目分类为不同的类别。
"ammo.rifle.hv_0": {
"shortname": "ammo.rifle.hv",
"customIcon": null,
"amount": 64,
"skinId": 0,
"isBp": false,
"category": 9,
"displayName": "HV 5.56 Rifle Ammo",
"cost": 10000,
"cooldown": 0
},
"radiationresisttea.pure_0": {
"shortname": "radiationresisttea.pure",
"customIcon": null,
"amount": 1,
"skinId": 0,
"isBp": false,
"category": 8,
"displayName": "Pure Anti-Rad Tea",
"cost": 10000,
"cooldown": 0
},
"healingtea.pure_0": {
"shortname": "healingtea.pure",
"customIcon": null,
"amount": 1,
"skinId": 0,
"isBp": false,
"category": 8,
"displayName": "Pure Healing Tea",
"cost": 10000,
"cooldown": 0
},
"ammo.rifle_0": {
"shortname": "ammo.rifle",
"customIcon": null,
"amount": 64,
"skinId": 0,
"isBp": false,
"category": 9,
"displayName": "5.56 Rifle Ammo",
"cost": 10000,
"cooldown": 0
},
"blueberries_0": {
"shortname": "blueberries",
"customIcon": null,
"amount": 1,
"skinId": 0,
"isBp": false,
"category": 8,
"displayName": "Blueberries",
"cost": 10000,
"cooldown": 0
}
}
从这里有一种方法可以索引它们,它会选择所有具有特定“类别”的索引。
例如,如果我想要所有的,"category": 9
它将显示以下内容
"ammo.rifle_0": {
"shortname": "ammo.rifle",
"customIcon": null,
"amount": 64,
"skinId": 0,
"isBp": false,
"category": 9,
"displayName": "5.56 Rifle Ammo",
"cost": 10000,
"cooldown": 0
},
"ammo.rifle.hv_0": {
"shortname": "ammo.rifle.hv",
"customIcon": null,
"amount": 64,
"skinId": 0,
"isBp": false,
"category": 9,
"displayName": "HV 5.56 Rifle Ammo",
"cost": 10000,
"cooldown": 0
}
请提前谢谢你
解决方案
好吧,您可以尝试这种方法:
定义与您的对象匹配的相应类:
public class SomeObject{
public string ShortName {get; set;}
/// ... add all other properties.
}
将传入的数据从 json 转换为 c# 对象:
在这里您可以选择使用 Newtonsoft 软件包。但是还有许多其他库可以帮助您解决这个问题。但这是您可以使用 Newtonsoft 执行的操作
var myData = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string,SomeObject> >(jsonString);
Dictionary<string, SomeObject>
这将根据提供的数据创建一个新的。
您可以myData
使用 LINQ 查询数据,即让我们获取其中的项目category == 9
result = myData.Where(p => p.Category == 9).ToDictionary<string,SomeObject>();
这将得到一个新字典result
,keys
其SomeObject.caterory
等于9
。
一些可以帮助您的参考资料包括:
推荐阅读
- ios - Obj-C - 用另一个数组过滤 NSMutableArray?
- python - “掌握 Matplotlib”一书中的 python 类型检查模块
- c - 为什么当 COLOR_PAIR 超过 200 或更高时,这对 ncurses 的 init_pair 会被破坏
- swift - 如何定义一个空的、“未初始化的”键路径并在以后设置?
- python - tkinter- HTML 编辑器中的自动完成错误
- c++ - 如何通过复制构造函数复制内置数组?
- visual-studio - 如何在 VS 2019 中打开小地图滑块?
- python - 使用 Apache 束 `GroupByKey` 并构造一个新列 - Python
- php - 使用 SQLT_BDOUBLE (Oracle BINARY_DOUBLE) 的 PHP OCI8 oci_bind_array_by_name 问题
- google-cloud-platform - 尝试在 VertexAI 管道中使用 CustomPythonPackageTrainingJobRunOp 时出错