C # Чтение / запись Json Проблема с текущим кодом - PullRequest
0 голосов
/ 06 мая 2019

Ошибка: ошибка CS0103: имя 'JsonConvert' не существует в текущем контексте

У меня последняя загрузка Newtonsoft, и я не могу придумать, как это исправить. Я перебрал около 50 различных ссылок, в которых говорилось об установке. Что это такое.

Я что-то упустил? Я просто пытаюсь добавить свои элементы json в список, чтобы я мог использовать их в программе, а затем записать обратно в файл Json. Если это не работает, может кто-нибудь связать или показать мне другой способ сделать это в c #?

using System.IO;
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json;

namespace Newtonsoft.Json {
public class CustomControls : MonoBehaviour
{
    private List<string> controls;

    //public object JsonConvert { get; private set; }

    // Start is called before the first frame update
    void Start()
    {
        LoadJson();
        for (int i = 0; i < controls.Count; i++)
        {
            Debug.Log(controls[i].ToString());
        }
    }

    public void LoadJson()
    {
        using (StreamReader r = new StreamReader("CustomControls.json"))
        {
            string json = r.ReadToEnd();
            controls = JsonConvert.DeserializeObject<List<string>>(json);
        }
    }
}
}

Ответы [ 2 ]

1 голос
/ 06 мая 2019

Измените имя пространства имен в вашем коде

using System.IO;
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json;

namespace AnythingOtherThanNewtonsoft.Json {
public class CustomControls : MonoBehaviour
{
    private List<string> controls;

    //public object JsonConvert { get; private set; }

    // Start is called before the first frame update
    void Start()
    {
        LoadJson();
        for (int i = 0; i < controls.Count; i++)
        {
            Debug.Log(controls[i].ToString());
        }
    }

    public void LoadJson()
    {
        using (StreamReader r = new StreamReader("CustomControls.json"))
        {
            string json = r.ReadToEnd();
            controls = JsonConvert.DeserializeObject<List<string>>(json);
        }
    }
}
}
0 голосов
/ 06 мая 2019

Если вы хотите или нуждаетесь в использовании Newtonsoft.Json по какой-то причине, я настоятельно рекомендую вам это guide .

Иначе, вот альтернатива для вашего случая, в которой вы можетеиспользовать JonsUtility для Unity.

Обернуть его нужно только в классе

using System.IO;
using UnityEngine;
using System.Collections.Generic;

public class MyControls{
    public List<string> controls;
}

public class CustomControls : MonoBehaviour
{
    private MyControls myControls;

    void Start()
    {
        SaveJson();
        LoadJson();
        for (int i = 0; i < myControls.controls.Count; i++)
        {
            Debug.Log(myControls.controls[i]);//No need to use ToString() here, it`s already a string
        }
    }

    public void SaveJson()
    {
        MyControls testControls = new MyControls() //Creates a new instance of MyControls
        {
            controls = new List<string>(2) {"a", "b"} //Your list of strings should go here.
        };

        File.WriteAllText("CustomControls.json", JsonUtility.ToJson(testControls)); 

    }

    public void LoadJson()
    {
        using (StreamReader r = new StreamReader("CustomControls.json"))
        {
            string json = r.ReadToEnd();
            myControls = JsonUtility.FromJson<MyControls>(json);
        }
    }
}

Редактировать: добавлен пример сохранения файла JSON с помощью JsonUtility. Созданный файл имеет это значениеэто {"controls":["a","b"]}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...