C# 如何将自定义字符串数据转换为json并逐个获取数据

C# 如何将自定义字符串数据转换为json并逐个获取数据,c#,arrays,json,string,unity3d,C#,Arrays,Json,String,Unity3d,这是我的字符串数据: [1,1,1,2,1,1,1,1,2,1,3,1,1,1,1,2,1,3] 我将字符串数据转换成json,我这样做 string jsonString = "[1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1]"; private void Start() { ExampleClass dataParser = new ExampleClass(); dataParser.dataToParse = jsonStr

这是我的字符串数据:

[1,1,1,2,1,1,1,1,2,1,3,1,1,1,1,2,1,3]

我将字符串数据转换成json,我这样做

string jsonString = "[1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1]";
private void Start()
{
    ExampleClass dataParser = new ExampleClass();
    dataParser.dataToParse = jsonString;

    //Convert to Json
    string exampleClassToJson = JsonUtility.ToJson(dataParser);
    Debug.Log(exampleClassToJson);
    }
}

[Serializable]
public class ExampleClass
{
    public string dataToParse;
}
它被成功地转换了,这是它的输出:

{“dataToParse”:“[1,1,1,2,1,1,1,1,1,2,1,1,1,2,1,1]”

现在我的问题是如何一个接一个地获取这些数据我能做到吗?谁能帮帮我吗

我想在这里实现的是制作一个类似这样的记分板

在我的字符串数据中,红色圆圈是我的
“2”
,蓝色圆圈是我的
“1”

将json更改为:

 {"dataToParse":"[1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1]"}

然后将类更改为:

[Serializable]
public class ExampleClass
{
    public List<int>dataToParse;
}
编辑: 根据您上次关于如何转换json字符串的评论,我将让系统处理它并保持简单

创建ExampleClass的实例并填充值。然后让JsonUtility完成剩下的工作

void Start()
{
      ExampleClass ec = new ExampleClass();
      ec.dataToParse = new List<int>(){1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1};
      string json = JsonUtility.ToJson(ec);
}
void Start()
{
ExampleClass=新ExampleClass();
ec.dataToParse=new List(){1,1,1,2,1,1,1,1,2,1,1,1,1,2,1,1,1};
字符串json=JsonUtility.ToJson(ec);
}
将json更改为:

 {"dataToParse":"[1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1]"}

然后将类更改为:

[Serializable]
public class ExampleClass
{
    public List<int>dataToParse;
}
编辑: 根据您上次关于如何转换json字符串的评论,我将让系统处理它并保持简单

创建ExampleClass的实例并填充值。然后让JsonUtility完成剩下的工作

void Start()
{
      ExampleClass ec = new ExampleClass();
      ec.dataToParse = new List<int>(){1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1};
      string json = JsonUtility.ToJson(ec);
}
void Start()
{
ExampleClass=新ExampleClass();
ec.dataToParse=new List(){1,1,1,2,1,1,1,1,2,1,1,1,1,2,1,1,1};
字符串json=JsonUtility.ToJson(ec);
}

这确实是可能的。循环遍历
dataToParse
变量。确保循环从
1
开始,而不是从
0
开始。还要确保循环以
dataToParse.Length-1而不是
dataToParse.Length结束。这将删除
[
]

在循环中,计数器的增量为
3
,而不是通常的
1
。通过这样做,它还将删除json中每个值后面的“,”和“”。您可以在循环中以
char
的形式获取每个值,该值可以转换为您想要的任何值类型

ExampleClass obj = JsonUtility.FromJson<ExampleClass>(exampleClassToJson);
//Loop over it
for (int i = 1; i < obj.dataToParse.Length - 1; i += 3)
{
    char indivisualChar = obj.dataToParse[i];

    Debug.Log(indivisualChar);
}
ExampleClass obj=JsonUtility.FromJson(exampleClassToJson);
//绕过去
对于(int i=1;i

虽然这应该可以解决您问题中的问题,但我建议您使用数组或列表来表示此数据,除非您有充分的理由这样做,然后再去做。

这确实是可能的。循环遍历
dataToParse
变量。确保循环从
1
开始,而不是从
0
开始。还要确保循环以
dataToParse.Length-1而不是
dataToParse.Length结束。这将删除
[
]

在循环中,计数器的增量为
3
,而不是通常的
1
。通过这样做,它还将删除json中每个值后面的“,”和“”。您可以在循环中以
char
的形式获取每个值,该值可以转换为您想要的任何值类型

ExampleClass obj = JsonUtility.FromJson<ExampleClass>(exampleClassToJson);
//Loop over it
for (int i = 1; i < obj.dataToParse.Length - 1; i += 3)
{
    char indivisualChar = obj.dataToParse[i];

    Debug.Log(indivisualChar);
}
ExampleClass obj=JsonUtility.FromJson(exampleClassToJson);
//绕过去
对于(int i=1;i

虽然这可以解决您问题中的问题,但我建议您使用数组或列表来表示此数据,除非您有充分的理由这样做,然后再使用它。

如何将我的this
{“dataToParse”:“[1,1,1,2,1,1,1,2,1,1,2,2,1,1,1,1,2,1,1]}
更改为此
{“dataToParse”:[1,1,1,2,1,1,2,1,2,1,1,1,2,1,1]}
-我是从最高的长官那里宣布的..我如何才能把我的这个
{“dataToParse”:“[1,1,1,1,2,2,1,1,1,1,1,2,1,2,2,1,1]”
改成这个
{“dataToParse:[1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1]
?我是从上面声明的,先生..如果您只需将它复制并粘贴到
启动
功能的末尾,它应该可以立即运行。您问题中的那个…哇。谢谢:)(y)如果您只需将其复制并粘贴到
开始
函数的末尾,它应该可以立即运行。您问题中的那个……哇,谢谢:)(y)