I'm relatively new to Java, and I'm struggling to find any "easy to understand" documentation on how to properly use the org.json package, and I can't seem to find any function that replaces the value of a key, only adding new ones.
By the way, sorry if this post isn't properly formatted or something, am also new to stackoverflow.
This is the content of my JSON file:
{
"gbp": [
{
"yen": 183.65,
"usd": 1.28,
"euro": 1.17
}
],
"usd": [
{
"yen": 144.67,
"gbp": 0.79,
"euro": 0.92
}
],
"euro": [
{
"yen": 156.96,
"usd": 1.08,
"gbp": 0.85
}
],
"yen": [
{
"euro": 0.0064,
"usd": 0.0069,
"gbp": 0.0054
}
]
}
This is the code that loads the jsonContent into a string then an object:
String jsonContent = new String(Files.readAllBytes(Paths.get("src/rates.json")));
JSONObject jsonObject = new JSONObject(jsonContent);
I then need to find the missing currency in an ArrayList named: orderOfExchangesForConfirmRateChanges. This is in a separate java file, so it is called with: gui.orderOfExchangesForConfirmRateChanges.
This is done with this code:
String requiredCurrency = null; //this is needed for later
String[] currencies = new String[] {"usd", "gbp", "euro", "yen"};
for(String currency : currencies){
if(!gui.orderOfExchangesForConfirmRateChanges.toString().contains(currency)){
requiredCurrency = currency;
System.out.println("Found currency.");
}
}
Once this has completed, we call this bit of code to get the data within the json file corresponding to the
requiredCurrency variable:
JSONArray desiredJsonArray = jsonObject.getJSONArray(requiredCurrency);
System.out.println(desiredJsonArray); // here to help me visualise things - example, if requiredCurrency = euro, output would be: [{"yen":156.96,"gbp":0.85,"usd":1.08}]
So hereafter, I need to change the values of "yen", "gbp", "usd", but I cannot seem to figure it out.
For example if I wanted to change the contents of the euro section of rates.json from:
{
"euro": [
{
"yen": 144.67,
"gbp": 0.79,
"euro": 0.92
}
]
}
to:
{
"euro": [
{
"yen": 2000,
"gbp": 50,
"euro": 100
}
]
}
And then re-insert it into the main JSONObject and rewrite the rates.json file to include these new values.
Sorry if this question is a bit all over the place.
If anything needs to be cleared up or re-explained, let me know
I think you almost had it.
In your json structure, the value for each currency is an array which contains a single object. To change a value of a specific currency inside an array, you need to get the JSONObject from the array then change the value.
now, write json back to file: