Skocz do zawartości
  • 0

JSON


xBlaczeKx
 Udostępnij

Pytanie

Cześć, mam problem z JSON'em. Najpierw podam wszystkie klasy, potem wytłumaczę o co chodzi :P
 

JSONFile

Spoiler

public class JSONFile
{

    private FileWriter file;
    private JSONObject jsonObject = new JSONObject();
    private JSONArray jsonArray = new JSONArray();

    public JSONFile(String filename) 
    {
        try 
        {
        	file = new FileWriter(Main.getInst().getDataFolder() + "/playerdata/" + filename);
        } 
        catch (Exception e) 
        {
            e.printStackTrace();
        }
    }

    public JSONObject getJSONObject()
    {
        return jsonObject;
    }

    @Deprecated
    public JSONArray getJSONArray()
    {
        return jsonArray;
    }

    @SuppressWarnings("unchecked")
	public JSONArray createJSONArray(String key, JSONArray list) 
    {
        getJSONObject().put(key, list);
        return jsonArray;
    }

    public void saveJSONFile()
    {
        try 
        {
            file.write(getJSONObject().toJSONString());
            file.flush();
            file.close();
        } 
        catch (Exception e) 
        {
            e.printStackTrace();
        }
    }
}

 


JSONFileManager
 

Spoiler

public class JSONFileManager {

    static JSONParser parser = new JSONParser();

    public static String readJSONString(String file, String string){
        try {
            Object obj = parser.parse(new FileReader(Main.getInst().getDataFolder() + "/playerdata/" + file));
            JSONObject jsonObject = (JSONObject) obj;

            return (String) jsonObject.get(string);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public static Integer readJSONInteger(String file, String string){
        try {
            Object obj = parser.parse(new FileReader(Main.getInst().getDataFolder() + "/playerdata/" + file));
            JSONObject jsonObject = (JSONObject) obj;

            return (Integer) jsonObject.get(string);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public boolean readJSONBoolean(String file, String string){
        try {
            Object obj = parser.parse(new FileReader(Main.getInst().getDataFolder() + "/playerdata/" + file));
            JSONObject jsonObject = (JSONObject) obj;

            return (Boolean) jsonObject.get(string);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

    public static Long readJSONLong(String file, String string){
        try {
            Object obj = parser.parse(new FileReader(Main.getInst().getDataFolder() + "/playerdata/" + file));
            JSONObject jsonObject = (JSONObject) obj;

            return (Long) jsonObject.get(string);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public String readJSONList(String file, String string, int pos){
        try {
            Object obj = parser.parse(new FileReader(Main.getInst().getDataFolder() + "/playerdata/" + file));
            JSONObject jsonObject = (JSONObject) obj;
            JSONArray msg = (JSONArray) jsonObject.get(string);
            return (String) msg.get(0);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    @SuppressWarnings("unchecked")
	public static void modifyJSONValue(String file, String key, Object value){
        JSONFile jsonFile = new JSONFile(file);
        jsonFile.getJSONObject().put(key, value);
        jsonFile.saveJSONFile();
    }
    
	public static void removeJSONValue(String file, String key){
        JSONFile jsonFile = new JSONFile(file);
        jsonFile.getJSONObject().remove(key);
        jsonFile.saveJSONFile();
    }
}

 


Błąd jest w tym, że jak próbuję edytować wartość obiektu, a mam tych obiektów parę to usuwa mi wszystkie pozostałe i zostawia tylko ten zmodyfikowany.
Przykład:
>> Na początku:

{
	"coins": 10
	"tokens": 100
}

>> Po edycji: (Chcę dodać np. 100 coinsów używając funkcji "modifyJSONValue")

{
	"coins": 110
}


Ma ktoś jakiś pomysł? :O

Odnośnik do komentarza
Udostępnij na innych stronach

2 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...