Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parse nested json in unity [duplicate]

Tags:

json

c#

unity3d

I have an issue parsing this json :

{
    "product_info":
    {
        "title": "Product Name"
    }
}

here is my code :

using UnityEngine;
using System.Collections;
using System.IO;
using System.Net;
using UnityEngine.UI;

public class ReadJson : MonoBehaviour
{
    public Text myText;

    [System.Serializable]
    public class ProductInfo
    {
        public string title { get; set; }
    }

    [System.Serializable]
    public class RootObject
    {
        public ProductInfo product_info { get; set; }
    }

    void Start () {

        TextAsset asset = Resources.Load (Path.Combine ("Json", "toulouse")) as TextAsset;

        RootObject m = JsonUtility.FromJson<RootObject> (asset.text);

        Debug.Log (m.product_info.title);

    }
}

I receive this error message : "Object reference not set to an instance of an object". I already tried, with success to parse a not nested json but not I don't understand why but doesn't work even after created the appropriated class.

like image 950
Silvering Avatar asked Oct 20 '16 13:10

Silvering


2 Answers

The JsonUtility does not support properties. Just remove the { get; set;}

[System.Serializable]
public class ProductInfo
{
    public string title;
}

[System.Serializable]
public class RootObject
{
    public ProductInfo product_info;
}
like image 106
Everts Avatar answered Nov 07 '22 03:11

Everts


Unity's JSON implementation is much like what a small child would write for their CS1 project. It's "lacking" at best for any serious JSON usage... ;-)

Recommend using: JSON .NET For Unity if you can pony up for it.

Or... use https://github.com/Bekwnn/UnityJsonHelper if you wish to stick with Unity's JSON implementation. This library solves the exact problem you describe.

like image 20
slumtrimpet Avatar answered Nov 07 '22 05:11

slumtrimpet