1
votes

Comment supprimer une propriété JSON spécifique de la chaîne JSON

Je configure le journal d'audit pour l'API Web. Ici, je voudrais supprimer la propriété de mot de passe de la chaîne json pour des raisons de sécurité. Je ne veux pas enregistrer le mot de passe de connexion pour l'API de connexion.

Json / Request Payload:

var payload = JArray.Parse(objQueue.payload);
payload.Remove("password");

J'ai essayé avec le code ci-dessous:

{"code":"medics1","username":"admin","password":"password"}


3 commentaires

Pouvez-vous nous fournir ce que vous avez essayé jusqu'à présent ...? Tout code ou implémentation


Veuillez vérifier la question mise à jour


@NayanRudani, j'ajoute ma réponse ci-dessous avec une capture d'écran de sortie. Essayez-le et faites-le moi savoir :)


3 Réponses :


1
votes

Vous devriez utiliser l'analyse des projets ici. Le code ci-dessous du site newtonsoft devrait être utile

rss.Property(“password”).Remove();

Vous n'avez pas d'objet nommé, vous pouvez donc appeler directement

string json = @"{
    'channel': {
     'title': 'Star Wars',
     'link': 'http://www.starwars.com',
     'description': 'Star Wars blog.',
     'obsolete': 'Obsolete value',
     'item': []
    }
 }";

JObject rss = JObject.Parse(json);
JObject channel = (JObject)rss["channel"];
channel.Property("obsolete").Remove();

Une autre approche alternative est pour désérialiser dans une classe qui ignore la propriété du mot de passe, puis la sérialiser à nouveau.

J'espère que cela vous aidera.


0 commentaires

1
votes

Vous aviez presque raison, il vous suffit de désérialiser en un objet au lieu d'un tableau basé sur votre chaîne JSON.

{
  "code": "medics1",
  "username": "admin"
}

Sortie:

string str = @"{'code':'medics1','username':'admin','password':'password'}";
JObject j = JsonConvert.DeserializeObject<JObject>(str);
j.Remove("password");
Console.WriteLine(j.ToString(Formatting.Indented));


0 commentaires

1
votes

Vous êtes fermé à votre objectif. Vous avez juste besoin d'un petit changement dans votre code.

Vous utilisez JArray et ceci est utilisé pour analyser les json qui commencent et se terminent par [...] pas pour {...}

Et votre json est un JObject qui signifie son début et sa fin par {...} code >

Utilisez simplement JObject au lieu de JArray et cela fonctionnera

string json = @"{ 'code':'medics1','username':'admin','password':'password'}";

JObject jObject = JObject.Parse(json);

jObject.Remove("password");

string outputJson = jObject.ToString();

Sortie: (à partir du débogueur)

entrez la description de l'image ici


0 commentaires