1

インポートしたメタデータには、DM にインポートした後の単一の文字列である、事前定義されたネスト構造 (以下に例を示します) があります。メタデータ全体と各ブランチ レベルは中括弧 {} で囲まれ、すべてのキーとキー値は引用符 "" で囲まれ、コロンで区切られます。

私の質問は、データを変換して TagGroup オブジェクトにラップし、インデックス作成、検索、およびデータ アクセス操作をより簡単に実行できるようにする方法です。

ありがとう!

次に例を示します。

{
    "Acquisition": {
        "AcquisitionStartDatetime": {
            "DateTime": "1473763749"
        },
        "AcquisitionDatetime": {
            "DateTime": "0"
        },
        "BeamType": "",
        "SourceType": "Monochromator"
    },
    "BinaryResult": {
        "AcquisitionUnit": "",
        "CompositionType": "",
        "DetectorIndex": "3",
        "Detector": "HAADF",
        "PixelSize": {
            "width": "5.408370946750477e-010",
            "height": "5.408370946750477e-010"
        },
        "PixelUnitX": "m",
        "PixelUnitY": "m",
        "Offset": {
            "x": "-2.769085924736244e-007",
            "y": "-2.769085924736244e-007"
        },
        "Encoding": ""
    },
    "Sample": "",
    "GasInjectionSystems": ""
}
4

2 に答える 2

2

Mike がコメントで指摘しているように、これは難しい作業というよりは退屈な作業です。フォーマットを変換する別のクラスで小さなパーサー スクリプトを作成するのが最善

"NAME: {ラベル NAME の TagGroups に加えて、階層レベルを上げます

"NAME": "VALUE"ラベル NAME と値 VALUE のタグに。

}「階層レベルを下げる」ステップに。

タググループを作成するときはいつでも文字列を使用できることに注意してください。後でそれを数値として読みたい場合でも同様です。

現在の「タググループレベル」を再帰的に参照して記憶し、新しいタグがそのレベルで追加されるようにします。無効なテキスト セクションをスキップします。

DigitalMicrograph の F1 ヘルプ ドキュメントには、文字列に関するセクションがあり、必要になる可能性が最も高いコマンドがリストされています。

String StringAppend( String s1, String s2 ) 
Number StringCompare( String s1, String s2 ) 
Boolean StringIsValid( String str ) 
String StringToLower( String str ) 
String StringToUpper( String str ) 
Number len( String str )
String left( String str, Number count )
String mid( String str, Number offset, Number count )
String right( String str, Number count )
Number find( String s1, String s2 )
Number val( String str )

さらに、次のような文字列に tert 演算子を使用すると便利な場合があります。

number isOK = 1
string str =  isOK == 1 ? "true" : "false"

また、解析するときは、タブレータと改行文字に注意してください。(\t と \n を使用して検索します。文字列で int を指定する場合は、\ が制御文字として解釈されるため、"\n" と "\t" を使用する必要がある場合があります。)

于 2016-09-27T06:17:54.390 に答える