ReadFromFile(FileName: String);
ReadFromFile(FileName: String);
FileName. Путь и наименование JSON-файла.
Метод ReadFromFile загружает JSON-структуру из указанного файла.
Для выполнения примера предполагается наличие JSON-файла «d:\Work\Json\testfile.json».
Добавьте ссылки на системные сборки: ForeSystem (для примера на Fore.NET).
Sub UserProc;
Var
Doc: IJsonDocument;
JSON: IJsonObject;
Begin
Doc := New JsonDocument.Create;
Doc.ReadFromFile("d:\Work\Json\testfile.json");
JSON := Doc.Root;
ShowElements(JSON);
End Sub UserProc;
Sub ShowElements(JSON: IJsonObject);
Var
i, c: Integer;
Element: IJsonElement;
Begin
c := JSON.Count;
For i := 0 To c - 1 Do
Element := JSON.ItemByIndex(i);
Debug.WriteLine("Name: " + JSON.Property_(i));
Debug.Write("Type: " + Element.GetType.ToString + ". Value: ");
ShowElement(Element);
End For;
End Sub ShowElements;
Sub ShowElement(Element: IJsonElement);
Begin
Select Case Element.GetType
Case JsonElementType.Boolean: Debug.WriteLine(Element.AsBoolean);
Case JsonElementType.Double: Debug.WriteLine(Element.AsDouble);
Case JsonElementType.Integer: Debug.WriteLine(Element.AsInteger);
Case JsonElementType.NullValue: Debug.WriteLine("null value");
Case JsonElementType.String: Debug.WriteLine(Element.AsString);
Case JsonElementType.Array: ShowArray(Element.AsArray);
Case JsonElementType.Object: ShowObject(Element.AsObject);
End Select;
End Sub ShowElement;
Sub ShowArray(JSONArray: IJsonArray);
Var
Element: IJsonElement;
i, c: Integer;
Begin
Debug.Indent;
c := JSONArray.Count;
Debug.WriteLine("Количество отобранных элементов: " + c.ToString);
For i := 0 To c - 1 Do
Element := JSONArray.Item(i);
ShowElement(Element);
End For;
Debug.Unindent;
End Sub ShowArray;
Sub ShowObject(Obj: IJsonObject);
Var
Element: IJsonElement;
i, c: Integer;
Begin
Debug.Indent;
c := Obj.Count;
For i := 0 To c - 1 Do
Element := Obj.ItemByIndex(i);
ShowElement(Element);
End For;
Debug.Unindent;
End Sub ShowObject;
Imports Prognoz.Platform.Interop.ForeSystem;
Sub UserProc();
Var
Doc: IJsonDocument = New JsonDocumentClass();
JSON: IJsonObject;
Begin
Doc.ReadFromFile("d:\Work\Json\testfile.json");
JSON := Doc.Root;
ShowElements(JSON);
End Sub;
Sub ShowElements(JSON: IJsonObject);
Var
i, c: Integer;
Element: IJsonElement;
Begin
c := JSON.Count - 1;
For i := 0 To c Do
Element := JSON.ItemByIndex[i];
System.Diagnostics.Debug.WriteLine("Name: " + JSON.@Property[i]);
System.Diagnostics.Debug.Write("Type: " + Element.GetType.ToString() + ". Value: ");
ShowElement(Element);
End For;
End Sub;
Sub ShowElement(Element: IJsonElement);
Begin
Select Case Element.GetType
Case JsonElementType.jetBoolean: System.Diagnostics.Debug.WriteLine(Element.AsBoolean);
Case JsonElementType.jetDouble: System.Diagnostics.Debug.WriteLine(Element.AsDouble);
Case JsonElementType.jetInteger: System.Diagnostics.Debug.WriteLine(Element.AsInteger);
Case JsonElementType.jetNullValue: System.Diagnostics.Debug.WriteLine("null value");
Case JsonElementType.jetString: System.Diagnostics.Debug.WriteLine(Element.AsString);
Case JsonElementType.jetArray: ShowArray(Element.AsArray);
Case JsonElementType.jetObject: ShowObject(Element.AsObject);
End Select;
End Sub;
Sub ShowArray(JSONArray: IJsonArray);
Var
Element: IJsonElement;
i, c: Integer;
Begin
System.Diagnostics.Debug.Indent();
c := JSONArray.Count;
System.Diagnostics.Debug.WriteLine("Количество отобранных элементов: " + c.ToString());
For i := 0 To c - 1 Do
Element := JSONArray.Item[i];
ShowElement(Element);
End For;
System.Diagnostics.Debug.Unindent();
End Sub;
Sub ShowObject(Obj: IJsonObject);
Var
Element: IJsonElement;
i, c: Integer;
Begin
System.Diagnostics.Debug.Indent();
c := Obj.Count;
For i := 0 To c - 1 Do
Element := Obj.ItemByIndex[i];
ShowElement(Element);
End For;
System.Diagnostics.Debug.Unindent();
End Sub;
При выполнении примера из файла будет считана JSON-структура. Информация об отдельных элементах структуры будет выведена в консоль среды разработки.
См. также: