私はドット表記を使用してアクセスできるオブジェクトに文字列を解析できるようにしたいと考えています。例えば、配列表記の代わりにmyobject.property。 myobject ['property']配列表記は正常に動作します。ここに私がこれまで持っているものがあります。ダーツを使用したJSONの解析
私はいくつかのXMLを持っている:
JSONに変換<level1 name="level1name">
<level2 type="level2Type">
<entry>level2entry</entry>
<entry>level2entry</entry>
</level2>
</level1>
:
{
"level1": {
"name": "level1name",
"level2": {
"type": "level2Type",
"entry": [
"level2entry",
"level2entry"
]
}
}
}
I以下ダートコードを有する:(所望の)出力を生成
Object jsonObject = JSON.parse("""{
"level1": {
"name": "level1name",
"level2": {
"type": "level2Type",
"entry": [
"level2entry",
"level2entry"
]
}
}
}
""");
print("my test 1 == ${jsonObject}");
print("my test 2 == ${jsonObject['level1']}");
print("my test 3 == ${jsonObject['level1']['name']}");
を:
my test 1 == {level1: {name: level1name, level2: {type: level2Type, entry: [level2entry, level2entry]}}}
my test 2 == {name: level1name, level2: {type: level2Type, entry: [level2entry, level2entry]}}
my test 3 == level1name
しかし、私はしようとすると:
print("my test 1 == ${jsonObject.level1}");
私は、次の取得:
理想的Exception: NoSuchMethodException : method not found: 'get:level1'
Receiver: {level1: {name: level1name, level2: {type: level2Type, entry: [level2entry, level2entry]}}}
Arguments: []
Stack Trace: 0. Function: 'Object.noSuchMethod' url: 'bootstrap' line:717 col:3
、私は、ドット表記を使用してアクセスし、コンパイラはオブジェクトについての警告を与えることなくできるオブジェクトをしたいです財産を持たない。
class MyJSONObject extends Object{
Level1 _level1;
Level1 get level1() => _level1;
set level1(Level1 s) => _level1 = s;
}
class Level1 {
String _name;
String get name() => _name;
set name(String s) => _name = s;
}
...
MyJSONObject jsonObject = JSON.parse("""{
"level1": {
"name": "level1name",
"level2": {
"type": "level2Type",
"entry": [
"level2entry",
"level2entry"
]
}
}
}
""");
...
print("my test 1 == ${jsonObject.level1.name}");
ではなく、私の望んだとして「level1name」を与えて、私は得る:私は次のことを試してみました
Exception: type 'LinkedHashMapImplementation<String, Dynamic>' is not a subtype of type 'MyJSONObject' of 'jsonObject'.
私はここで間違って何をしているのですか?私がしようとしていることをする方法はありますか?ありがとう。
これは脇にあります。あなたはオブジェクトからjavascriptへ、そしてjavascriptからJSONに変換できるはずです。 – will