在JSON数组中找到特定的选项(或者我应该如何重新格式化JSON文件)



我对JSON处理相当陌生,并且尝试使用java . parse()从JSON数组中找到特定对象相当困难。

我可以完美地解析数组,但我不太确定如何在数组中获得特定对象而不遍历它,并单独检查每个对象以找到匹配。也许我可以格式化我的JSON文件稍微好一点,或者甚至将我的项目中的两个JSON文件组合在一起。

以下是两个JSON文件:

knownshares.json

    [
        {
            "id": 1,
            "name": "Fileshare #1",
            "server": "file-server01",
            "folder": "shared-folder",
            "domain": "YOURDOMAIN"
        },
        {
            "id": 2,
            "name": "Fileshare #2",
            "server": "file-server02",
            "folder": "shared-folder",
            "domain": "YOURDOMAIN"
        }
    ]

users.json:

    [
        {
            "username": "youruser",
            "fileshares": [
                "1F",
                "2G"
            ]
        }
    ]

我以前用

就能做到这一点
    JsonConvert.DeserializeObject<List<User>>(jsonString);

,但我希望能够编辑文件内的特定对象,而无需读取和重写整个文件。

如果你对如何更好地构建我的JSon文件有任何建议,那将是有帮助的。我习惯使用数据库,这个项目并不是在正确的范围内加载sql lite或类似的东西,所以我认为JSon将是最简单的。

编辑:

我想在阅读了每个人的回应之后,很明显在JSON中不可能在不覆盖整个JSON文件的情况下编辑对象,我不担心这些文件会太大(现在最多可能有80个用户),如果情况越来越糟,我可以为用户对象添加时间戳,并在一段时间后修剪它们。

也许你应该使用XML而不是JSON?我不这样认为,你可以很容易地管理JSON文件,而不把文件解析为c#对象。如果文件很小,那么解析它所需的时间不会太多。

编辑:c#

var doc = XDocument.Load("file.xml");
var item = doc.Root.Elements("Product").Single(x => (string)x.Element("Title") == "p1").Element("Title");
item.SetValue("New_value");
doc.Save("file.xml");
xml

<?xml version="1.0" encoding="utf-8"?>
<Products>
  <Product>
    <Title>p1</Title>
    <Description>Desc1</Description>
  </Product>
  <Product>
    <Title>p2</Title>
    <Description>Desc2</Description>
  </Product>
</Products>

我发现Newtonsoft在使用json时非常有用。在过去,我只使用XML,但自从找到Newtonsoft库以来,我更喜欢使用json。它可以很容易地序列化和反序列化json对象。

https://www.nuget.org/packages/newtonsoft.json/

相关内容

  • 没有找到相关文章

最新更新