Maison >développement back-end >C++ >Comment sérialiser et désérialiser les tableaux JSON et JSON dans Unity en utilisant JSONUtility?

Comment sérialiser et désérialiser les tableaux JSON et JSON dans Unity en utilisant JSONUtility?

Linda Hamilton
Linda Hamiltonoriginal
2025-02-03 04:07:10684parcourir

La sérialisation JSONUtilité et la désertation JSON et JSON sont utilisées dans l'unité.

Question

Comment utiliser C # pour analyser et traiter les données JSON (objet unique et tableau) dans Unity, en particulier en utilisant Boomlagoon.json, Minijson ou Jsonutility?

Réponse

À partir de la version d'Unity 5.3.3, il est recommandé d'utiliser JSONUtility pour traiter les données JSON car elle a des performances élevées et une utilisation facile.

<.> 1. La sérialisation et la dérivé d'un seul objet de données:

Sérialisation:

Sortie: Capitalisation:

<code class="language-csharp">Player playerInstance = new Player();
playerInstance.playerId = "8484239823";
playerInstance.playerLoc = "Powai";
playerInstance.playerNick = "Random Nick";
string playerToJson = JsonUtility.ToJson(playerInstance);</code>

<.> 2. La sérialisation et la dérivée du tableau JSON:
<code class="language-json">{"playerId":"8484239823","playerLoc":"Powai","playerNick":"Random Nick"}</code>

Afin de gérer le tableau JSON, vous pouvez utiliser la classe auxiliaire de cet entrepôt GitHub:

Classe auxiliaire -jsonhelper.cs
<code class="language-csharp">string jsonString = "{\"playerId\":\"8484239823\",\"playerLoc\":\"Powai\",\"playerNick\":\"Random Nick\"}";
Player player = JsonUtility.FromJson<Player>(jsonString);</code>

Sérialisation:

Sortie: Capitalisation:

<code class="language-csharp">public static class JsonHelper
{
    public static T[] FromJson<T>(string json)
    {
        Wrapper<T> wrapper = JsonUtility.FromJson<Wrapper<T>>(json);
        return wrapper.Items;
    }

    public static string ToJson<T>(T[] array)
    {
        Wrapper<T> wrapper = new Wrapper<T>();
        wrapper.Items = array;
        return JsonUtility.ToJson(wrapper);
    }

    private class Wrapper<T>
    {
        public T[] Items;
    }
}</code>

Autres précautions

pour JSON avec des attributs numériques ou numériques:
<code class="language-csharp">Player[] players = new Player[2];
players[0] = new Player { playerId = "8484239823", playerLoc = "Powai", playerNick = "Random Nick" };
players[1] = new Player { playerId = "512343283", playerLoc = "User2", playerNick = "Rand Nick 2" };
string playersToJson = JsonHelper.ToJson(players);</code>
Vous pouvez envisager d'utiliser SimpleJSON dans Unity Wiki.

Échec de JSONUtility:
<code class="language-json">{"Items":[{"playerId":"8484239823","playerLoc":"Powai","playerNick":"Random Nick"},{"playerId":"512343283","playerLoc":"User2","playerNick":"Rand Nick 2"}]}</code>
Assurez-vous que la classe n'est pas un tableau, a

les attributs, et les membres ne sont pas définis comme des attributs (supprimer ).

<code class="language-csharp">string jsonString = "{\"Items\":[{\"playerId\":\"8484239823\",\"playerLoc\":\"Powai\",\"playerNick\":\"Random Nick\"},{\"playerId\":\"512343283\",\"playerLoc\":\"User2\",\"playerNick\":\"Rand Nick 2\"}]}";
Player[] players = JsonHelper.FromJson<Player>(jsonString);</code>

Cette sortie révisée maintient l'image d'origine et son format, reproche le texte pour un flux et une clarté améliorés, et le formage cohérent des utilisateurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn