JSON.NET Ajouter/modifier des enfants

Je suis en train d'essayer de lire un document JSON à partir du serveur web (c'est un physique de fichier json) et de contrôler les modifications par rapport à ma base de données. En d'autres termes, j'ai besoin de synchroniser le document json et la base de données tous les soirs.

Pour cela, je suis en utilisant JSON.NET qui, je crois, est la voie à suivre lorsque l'on travaille avec du JSON en C# (?) L' .NET plate-forme est la version 3.5.

Jusqu'à présent, je suis capable de lire le document et d'obtenir des valeurs.

Mon JSON ressemble à ceci:

{"members":[

{"member":
    {
        "id":"4282",
        "status":"1931",
        "aktiv":"1",
        "firmanavn":"firmname1",
        "firmaUrl":"www.firmsite.com",
        "firmaUrlAlternativ":"",
        "firmaSidstKontrolleretDato":"30-08-2010",
        "firmaGodkendelsesDato":"07-03-2002"
    }
},
{"member":
    {
        "id":"4283",
        "status":"1931",
        "aktiv":"1",
        "firmanavn":"firmname2",
        "firmaUrl":"www.firmsite.com",
        "firmaUrlAlternativ":"",
        "firmaSidstKontrolleretDato":"30-08-2010",
        "firmaGodkendelsesDato":"18-12-2000"
    }
}, .... and so on
]}

Et mon code C# est comme suit:

using (TextReader reader = File.OpenText(Server.MapPath("~/members.json")))
    {
        JsonTextReader jsonreader = new JsonTextReader(reader);
        var o = JObject.ReadFrom(jsonreader);
        jsonreader.Close();
        JObject obj = JObject.Parse(o.ToString());

        JArray items = (JArray)obj["members"];
        var members = Member.GetAllAsList();

        JObject item;
        JToken token;

        List<string> currentIds = new List<string>();
        for (int i = 0; i < items.Count; i++)
        {
            item = (JObject)items[i];
            token = item.First;

            while (token != null)
            {
                //ltTest.Text += ((JProperty)token).Value["firmanavn"].ToString() + System.Environment.NewLine;
                currentIds.Add(((JProperty)token).Value["id"].ToString());
                token = token.Next;
            }
        }

        foreach (var member in members)
        {
            if (!currentIds.Contains(member.Id.ToString()))
            {
                ltTest.Text += member.Text;
            }
        }
    }

Donc, fondamentalement, il y a trois scénarios maintenant:

  • Un des membres de l'information a été modifiée dans la base de données: j'ai besoin de trouver le membre dans le document JSON et mettre à jour les champs correspondants

  • Un membre a été supprimé de la base de données: j'ai besoin de trouver le membre dans le document JSON et de le supprimer.

  • Un membre a été ajouté à la base de données: - je besoin d'ajouter que membre du document JSON.

Donc, quiconque est familier avec JSON.NET pour donner une touche (ou peut-être un peu de code-exemples?) sur comment atteindre cet objectif? J'ai à peine fait de lire le document json à partir du serveur, si cela semble être une bataille difficile pour moi en ce moment.

Vous vous rendez compte que vous pouvez sérialiser et désérialiser vers/à partir de json natif, droit? C'est un peu comme la Sérialisation Xml. À partir de là, vous êtes juste à travailler avec des objets .net. Pas bizarre API pour en apprendre davantage.

OriginalL'auteur bomortensen | 2011-09-13