2017-09-18 4 views
0

J'ai obtenu une méthode qui reçoit JProperty de tableaux. Cela peut être un simple tableau de chaînes: ("Img1.png", "Img2.png" ect). ou d'un tableau avec des objets:Comment vérifier le type de données de mon Jarray? (C#)

{[{ 
"id": "1", 
"name": "name", 
"image": "img1.png"},{ 
"id": "2", 
"name": "name", 
"image": "img2.png"}, 
{ 
"id": "3", 
"name": "name", 
"image": "img3.png" 
}]}" 

Dans les méthodes receving les différentes actions de JProperty doivent arriver, mais je ne peux pas obtenir le instruction if pour filtrer les objets trop d'un événement d'objet.

C'est actuellement mon code:

private static void handleArray(JProperty array) 
{ 

    foreach (JArray x in array) 
    { 
     JTokenType type = x.Type; 
     if (type == JTokenType.Object) 
     { 
      Console.WriteLine("Array with objects!"); 
     } 
     else { 
      foreach (string childrensTokens in x) 
       //Array with normal strings 
       Console.WriteLine(childrensTokens); 
     } 
    } 
} 

(. L'instruction else tombe en panne atm car il reçoit les objets trop) Est-ce que quelqu'un sait comment me aider? J'ai essayé d'arriver à l'childrenTokens mais j'ai échoué.

+0

'foreach (jarray x dans le tableau)' ??? Il n'y a pas de 'JArray' dans' JProperty' – Rahul

+0

Je suis assez nouveau avec Json et C#, ci-dessous j'ai répondu comment j'ai réussi à le faire fonctionner, mais je suis ouvert à la rétroaction ect x] – LMP

Répondre

0

fixe avec:

private static void handleArray(JProperty array) 
    { 
     //voor de gewone array: 

     foreach (JArray x in array) 
     { 
      foreach (var a in x) 
       if(a.Type == JTokenType.Object) 
       { 
        Console.WriteLine("Array with objects!"); 
       } 
       else 
       { 
        Console.WriteLine((string) a); 
       } 


     }