- Home /
Unity not reading from my json file?
So basically I'm an extreme noob at all of this, I'm simply just following a tutorial on youtube for creating an inventory system. My script "ItemDatabase.cs" is supposed to be pulling data from my "items.json" file, but when I use a debug.log, it shows nothing. No errors, just nothing. When in my code, the Debug.Log is supposed to display both the slug and description of the item from the json file as stated in my void start. Here's my code, and at the bottom is my json file.
I do have the StreamingAssets folder in my assets section along with the Items.json in that folder, so it is referencing the correct destination. And I do have LitJson.dll in my plugins folder. Any help would be much appreciated, I figure its simple considering I've done everything in the tutorial exactly the way he had done it and I'm getting no errors, but I'm very new to this. Thank you!
----ItemDatabase.cs----
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;
using System.IO;
public class ItemDatabase : MonoBehaviour {
private List<Item> database = new List<Item>();
private JsonData itemData;
void Start()
{
itemData = JsonMapper.ToObject(File.ReadAllText(Application.dataPath + "/StreamingAssets/Items.json"));
ConstructItemDatabase();
Debug.Log(database[1].Slug);
Debug.Log(FetchItemByID(0).Description);
}
public Item FetchItemByID(int id)
{
for (int i = 0; i < database.Count; i++)
if (database[i].ID == id)
return database[i];
return null;
}
void ConstructItemDatabase()
{
for (int i = 0; i < itemData.Count; i++)
{
database.Add(new Item((int)itemData[i]["id"], itemData[i]["title"].ToString(), (int)itemData[i]["value"],
(int)itemData[i]["stats"]["strength"], (int)itemData[i]["stats"]["defence"], (int)itemData[i]["stats"]["vitality"], itemData[i]["description"].ToString(),
(bool)itemData[i]["stackable"], (int)itemData[i]["rarity"],itemData[i]["slug"].ToString()));
}
}
}
public class Item
{
public int ID { get; set; }
public string Title { get; set; }
public int Value { get; set; }
public int Strength { get; set; }
public int Defence { get; set; }
public int Vitality { get; set; }
public string Description { get; set; }
public bool Stackable { get; set; }
public int Rarity { get; set; }
public string Slug { get; set; }
public Item(int id, string title, int value, int strength, int defence, int vitality, string description, bool stackable, int rarity, string slug)
{
this.ID = id;
this.Title = title;
this.Value = value;
this.Strength = strength;
this.Defence = defence;
this.Vitality = vitality;
this.Description = description;
this.Stackable = stackable;
this.Rarity = rarity;
this.Slug = slug;
}
public Item()
{
this.ID = -1;
}
}
---Items.Json---
[
{
"id": 0,
"title": "Steel Axe",
"value": 100,
"stats": {
"strength": 2,
"defence": 2,
"vitality": 2
},
"description": "An axe forged of steel.",
"stackable": false,
"rarity": 1,
"slug": "steel_axe"
},
{
"id": 1,
"title": "Steel Knife",
"value": 50,
"stats": {
"strength": 1,
"defence": 1,
"vitality": 1
},
"description": "A knife forged of steel.",
"stackable": true,
"rarity": 1,
"slug": "steel_knife"
}
]
Your answer
![](https://koobas.hobune.stream/wayback/20220612121655im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Distribute terrain in zones 3 Answers
Multiple Cars not working 1 Answer
An OS design issue: File types associated with their appropriate programs 1 Answer
Debug log to website. 2 Answers
Getting a list in a derived class 1 Answer