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.
OriginalL'auteur bomortensen | 2011-09-13
Vous devez vous connecter pour publier un commentaire.
Json.net a un truc qui s'appelle Linq-to-JSON, qui, selon le site web est:
De sorte qu'il supporte les requêtes LINQ qui, je n'ai pas utilisé de Linq-to-JSON, mais je suis sûr, saura combler tous les trois de vos exigences.
De référence et comment-tos, veuillez suivre ces liens:
http://james.newtonking.com/archive/2008/02/11/linq-to-json-beta.aspx
http://james.newtonking.com/projects/json/help/
OriginalL'auteur Waqas
Pour répondre à vos besoins, je vous suggère les étapes suivantes:
MEMBER
avec les 8 colonnesÀ partir de là, vous émettez des requêtes SQL qui sont en correspondance avec vos trois cas qui est:
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
Pour ce faire, lancez une Requête SQL qui comparent chaque champ, utilisez le jeu de résultats à mettre à jour le JSON
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.
Question d'une Requête SQL de faire la comparaison à l'aide de PAS DANS le comparateur de tables d'origine, la comparaison avec les
Member
tables que vous venez de créer. À partir d'ici, vous aurez la collecte des Identifiants de l'ensemble de résultats que vous pouvez utiliser pour supprimer l'appropriées Objet JSONUn membre a été ajouté à la base de données: - je besoin d'ajouter que membre du document JSON.
Faire l'inverse des étapes précédentes. Question d'une Requête SQL de comparer les données dans la base de données, mais pas dans le
Member
table. Utiliser le jeu de résultats à ajouter à l'Objet JSONÀ la fin du processus, vous auriez l'Objet JSON qui représente la synchronisation entre les deux
OriginalL'auteur momo