C# 团结:可以';t从JSON文件中读取字符串

C# 团结:可以';t从JSON文件中读取字符串,c#,json,unity3d,C#,Json,Unity3d,我试图从json文件中读取字符串并将其传递给Unity中的UI文本,我面临的问题是字符串总是空的,我不知道为什么,现在我找到json文件路径并读取它,但当我尝试访问字符串时,它是空的。我不知道如何阅读json。我真的不明白这一切是怎么回事。我不熟悉JSON格式,我正在尝试实践它。这是我的第一个方法。我使用的是Unity引擎,我使用流资产读取json文件 从Json脚本读取数据: using UnityEngine; using System.IO; public class ReadFrom

我试图从json文件中读取字符串并将其传递给Unity中的UI文本,我面临的问题是字符串总是空的,我不知道为什么,现在我找到json文件路径并读取它,但当我尝试访问字符串时,它是空的。我不知道如何阅读json。我真的不明白这一切是怎么回事。我不熟悉JSON格式,我正在尝试实践它。这是我的第一个方法。我使用的是Unity引擎,我使用流资产读取json文件

从Json脚本读取数据:

using UnityEngine;
using System.IO;


public class ReadFromJson : MonoBehaviour {

private string _filePath = "myText.json";

Data dh;

string str;
 void Start()
{



    LoadGameData();
}

public Data getCurrentRoundData()
{
    return dh;
}

private void LoadGameData()
{
    string filePath = Path.Combine(Application.streamingAssetsPath, _filePath);


    if (File.Exists(filePath))
    {

        string dataAsJSON = File.ReadAllText(filePath);
        DataHolder loadedData = JsonUtility.FromJson<DataHolder>(dataAsJSON);

        dh = loadedData.data;
        str = loadedData.data.TextToPass;
        Debug.Log("My Text is" + dh.TextToPass);

        Debug.Log("Path Exist");

    }


    else
    {
        Debug.LogError("CANNOT LOAD GAME DATA!!");
    }

}

}
}

Json文本

{"DataHolder":

    {
        "TextToPass":"I'm A Horse"
    }
}

Data.cs

[System.Serializable]
public class Data {

public string TextToPass ;
}

我得到的是TextToPass为null

模型有
数据
,JSON有
数据持有者
。JSON库并没有假设“哦,有一个属性,它们一定是这个意思”——它按名称命名,而名称不匹配

要么更改类型,要么更改JSON。他们需要匹配。举例来说,一种形式:

public class Foo {
    public int Bar {get;set;}
}
{ "Bar": 123 }
匹配表单的JSON:

public class Foo {
    public int Bar {get;set;}
}
{ "Bar": 123 }

我不确定,但这可能会解决你的问题。将您的型号更改为:

数据模型:

[System.Serializable]

public class Data {

public DataHolder dataHolder;

}
以及您的数据保持器型号:

[System.Serializable]

public class DataHolder  {

public string TextToPass;

}

希望有帮助

你能分享你的数据持有者模型吗?是的,检查更新问题你的问题缺少很多东西。您需要发布正在读取的json文件。
文件.Exists
是否返回true?什么是
TextToPass
?您可以看到如何在Unity中读取json。看起来您想用Json保存游戏数据。我为它创建了一个帮助类。数据模型呢?File Exist返回true yes,我的json有一个TextToPass,它说我是一匹马,我只想读取该文本并将其应用到我的Ui text上。这对Unity有效吗?我认为他们的财产有问题。我真的。。不明白。。我并不完全明白我的问题。你需要什么类型changed@Nanopl您的根类型是DataHolder;它只有一个数据属性。json指定了DataHolder属性-DataHolder中不存在该属性。json应该是“数据”,否则类型需要更改。您的json将相当于
{“Foo”:…}
re-myexample@Nanopl专业提示:调试反序列化问题时,发现问题的最简单方法是忘记反序列化,而是序列化您拥有的内容,并比较输出。我将json文件更改为路径DataHolder>Data>Text。但它仍然不起作用。这不是问题吗?不起作用,我更改了它,出现了错误,然后我修复了它们基本上只是更改了名称。。