# Type Array et Object

Si vous souhaitez générer un fichier json avec des données imbriquées, vous aurez besoin de la possibilité d'ajouter des objets et tableaux imbriqués.&#x20;

Pour cela il suffit d'ajouter un champ de type **array**  ou **objet** comme expliqué dans [générer un champ sur un datataset](/dataset-generation-doc/yaml/comment-generer-un-champ-sur-un-dataset.md).

### Array

```yaml
- fieldName: tableau1
  type : array
  fields :
    #ajout d'un champs dans le tableau 
    - fieldName :  age 
      type : integer
      rules :
        range:
          min : 18
          max : 98
          
     - fieldName: tableau2
       type : array 
       rules: 
         count : 2 
       fields : #ajout d'un tableau dans un tableau
          fieldName : mailtest #tableau2 = ["test.gg@gmail.com", "tarif.cloud@yahoo.com"]
          fakerType : email
          
```

Array se compose de la manière suivante&#x20;

type: array  #le type

fields : (un retour à la ligne et une tabulation) Ce champ précise l'endroit ou ajouter les nouveaux éléments

et rule&#x20;

{% hint style="warning" %}
Même si cela ne se voit pas dans le dataset final, il est important de nommer les champs tableau tout comme les autres champs par un nom différent à chaque fois. Cela va poser des problème avec le moteur de règles &#x20;
{% endhint %}

{% hint style="info" %}
**count** *->integer  Count est un paramètre nécessitant le paramètre rules, il permet de reproduire x fois les valeurs dans le tableau ex*

*#cas par defaut si il n'y a pas de count*

&#x20;*si count = 1  \["azerty", 12, true] (schéma de base)*&#x20;

&#x20;*si count =3 \["azerty", 12, true, "test", 87,  false, "griffe", 342, true]*

*Les champs vont être généré x fois, bien qui'l soit généré il sont quand même utilisable dans le moteur de règle et il est possible d'tablir une condition sur la première itération et sur chaque paramètre de celle si*

&#x20; *\[<mark style="background-color:yellow;">**"azerty", 12, true, "test",**</mark> 87,false, "griffe", 342, true]*
{% endhint %}

### Le cas copie dans array

Dans certains cas il se peux que vous ayes besoin de passer des tableaux d'élément par defaut ex <mark style="color:blue;">\["iphone 13", "Samsung Galaxy", "Honor 8x"]</mark> ... Au lieu de créer un champs pour chaque avec allowed\_value avec une valeur on peut utiliser copy

```yaml
- fieldName: tableau1
  type : array
  rules:
  copy : ["iphone 13", "Samsung Galaxy", "Honor 8x"]
  # pas besoin de fields avec copy        
- fieldName: tableau2
  type : array 
  rules: 
    count : 2 
  fields : #ajout d'un tableau dans un tableau
  fieldName : mailtest #tableau2 = ["test.gg@gmail.com", "tarif.cloud@yahoo.com"]
  fakerType : email
          
```

{% hint style="warning" %}
copy -> array Copy n'a pas besoin de paramètre field car il ne fait que copier des valeurs de bases sans pouvoir y appliquer une formule dessus.
{% endhint %}

{% hint style="danger" %}
Attention lorsqu'on utilise copy sur un array les valeurs à l'intérieurs ne sont pas utilisable par le moteur de règle car elles n'ont pas de type et ne sont pas déclarer comme avec un fieldName
{% endhint %}

## Object

object permet de créer des champs objets imbriqué disponilbe pour les formats xml et json

```yaml
- fieldName: test8
            type: object
            fields:
              - fieldName: test10
                fakerType: email
              - fieldName: test11
                type: object // objet imbrique avec comme clés test11
                fields:
                  - fieldName: test14
                    type: object // objet imbrique avec comme clés test11
                    fields:
                      - fieldName: test15
                        type: integer
                        rules:
                          range:
                            min: 1
                            max: 10
```

&#x20;Object ne prend aucun paramètre supplémentaire,

type : object #le type

fields : (un retour à la ligne et une tabulation) Ce champ précise l'endroit ou ajouter les nouveaux éléments


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dataset-generation-doc.gitbook.io/dataset-generation-doc/yaml/type-array-et-object.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
