On Friday, 4 October 2024 at 08:45:49 UTC, holyzantaclara wrote:
Hello hello everyone ^_^,
I am new in D, and started this morning. I found a way to read
a file at compile time with `-J.` and `static string content =
import("my_json_file.json")`
But then tried to statically evaluate with `static JSONValue j
= parseJson(content)` but it fails.
```sh
main.d(12): Error: variable `content` cannot be read at compile
time
main.d(12): called from here: `readJSON(content)`
```
Is there a way to achieve this?
My goal is to have a JSONValue at runtime that would be already
present in the binary. Cause the JSONValue is huge. Like
megabytes of data... And no I don't want to deal with a
database for now.
Thank you !
If you use dub, have a "stringImportPaths" field in dub.json
which works for me.
dub.json:
```
{
"name": "foo",
"stringImportPaths": [
"./"
]
}
```
my_json_file.json:
```
{
"name": "foo"
}
```
```
import std;
void main(){
immutable content = import("my_json_file.json");
pragma(msg, content);
immutable mjson = parseJSON(content);
writeln(mjson);
}
```
```
yields:
```
{
"name": "foo"
}
Linking foo
Running foo.exe
{"name":"foo"}
```