vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2020
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
JSON Datei in formatierte Textdatei umwandeln 
Autor: KleinerMann
Datum: 05.11.20 17:59

Hallo zusammen,

ich habe eine JSON Datei mit folgenden Inhalt:

[
 {
  "Name":"HerbiesRoute",
  "entries":
   [
    {
     "id": 1,
     "date": "11.09.2020",
     "time": "09:39:10",
     "velocity": 0.00,
     "latitude": 48.1931,
     "longitude": 11.6083
    },
    {
     "id": 2,
     "date": "11.09.2020",
     "time": "09:39:10",
     "velocity": 0.00,
     "latitude": 48.1931,
     "longitude": 11.6083
    },
    {
     "id": 3,
     "date": "11.09.2020",
     "time": "09:39:10",
     "velocity": 0.00,
     "latitude": 48.1931,
     "longitude": 11.6083
    }
   ]
 }
]
Ich möchte daraus eine Textdatei erzeugen, die folgendermaßen formatiert ist:
1
00:00:00,000 --> 00:00:00,033
11.09.2020 09:39:10
0.00km/h, lat=48.1931, long=11.6083
 
2
00:00:00,033 --> 00:00:00,066
11.09.2020 09:39:10
0.00km/h, lat=48.1931, long=11.6083
 
3
00:00:00,066 --> 00:00:00,100
11.09.2020 09:39:10
0.00km/h, lat=48.1931, long=11.6083
Mein Code bis jetzt sieht so aus:
Imports Newtonsoft.Json
Imports System.IO
 
Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
    End Sub
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles _
      Button1.Click
        Dim ofd1 As New OpenFileDialog
 
        ofd1.ShowDialog()
 
        Dim json As String = File.ReadAllText(ofd1.FileName)
        TextBox1.Text = json
 
    End Sub
End Class
Frage:
Wie kriege ich den Inhalt der Textbox in eine Textdatei ausgegeben, die meiner gewünschten Formatierung entspricht?


Vielen Dank im Voraus
Herbie
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: JSON Datei in formatierte Textdatei umwandeln 
Autor: Manfred X
Datum: 05.11.20 19:33

Hallo!

Den gelesenen Text per Split-Methode in Teilstrings zerlegen (geschweifte Klammer
als Trennzeichen).
Im Splitarray jedes Element, das mit chr(34) & "id" beginnt per Split
in Teilstrings zerlegen (Doppelpunkt als Trennzeichen).
Jedes zweite Element dieses Splitarray benutzen, um den
Inhalt als Zeile in eine Ausgabedatei zu schreiben.

Wie das zusätzlich einzufügende Zeitintervall entsteht,
kann ich nicht beurteilen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: JSON Datei in formatierte Textdatei umwandeln 
Autor: effeff
Datum: 06.11.20 12:31

Grundsätzlich kannst Du so arbeiten, wenn Du nicht schon den Parser von Newtonsoft benutzen willst:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles _
  Button1.Click
 
        Dim sr As New StreamReader("D:\test\json.txt")
        Dim line As String = ""
 
        Do While (sr.Peek() >= 0)
 
            line = sr.ReadLine
 
            If line.Contains("id") Then
                Dim strucDaten As New Daten
                strucDaten.ID = GetValue(line)
                line = sr.ReadLine
                strucDaten.Datum = GetValue(line)
                line = sr.ReadLine
                strucDaten.Zeit = GetValue(line)
                line = sr.ReadLine
                strucDaten.Geschwindigkeit = GetValue(line)
                line = sr.ReadLine
                strucDaten.Laenge = GetValue(line)
                line = sr.ReadLine
                strucDaten.Breite = GetValue(line)
                WriteTextboxText(strucDaten)
            End If
        Loop
 
        sr.Close()
 
    End Sub
 
    Private Function GetValue(ByVal ToParse As String) As String
        ToParse = LTrim(ToParse)
        Dim arr() As String = ToParse.Split(" ")
        arr(1) = arr(1).Replace(Chr(34), "")
        arr(1) = arr(1).Replace(",", "")
        Return (arr(1))
    End Function
 
    Private Sub WriteTextboxText(ByVal strucDaten As Daten)
        If TextBox1.Text <> "" Then
            TextBox1.Text = TextBox1.Text & vbCrLf
        End If
        TextBox1.Text = TextBox1.Text & strucDaten.ID & vbCrLf
        TextBox1.Text = TextBox1.Text & strucDaten.Datum & vbCrLf
        TextBox1.Text = TextBox1.Text & strucDaten.Zeit & vbCrLf
        TextBox1.Text = TextBox1.Text & strucDaten.Geschwindigkeit & vbCrLf
        TextBox1.Text = TextBox1.Text & strucDaten.Laenge & vbCrLf
        TextBox1.Text = TextBox1.Text & strucDaten.Breite & vbCrLf
    End Sub
Ich denke, für die Formatierung nach Deinem Gusto kannst Du selbst sorgen...

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: JSON Datei in formatierte Textdatei umwandeln 
Autor: KleinerMann
Datum: 06.11.20 15:25

Hallo effeff,

Danke, coole Sache. Leider krieg ich nen Fehler:

Fehler BC30002 Der Typ "Daten" ist nicht definiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: JSON Datei in formatierte Textdatei umwandeln 
Autor: effeff
Datum: 06.11.20 18:41

Da ist beim kopieren des Codes nicht alles mit rüber gekommen...

Private Structure Daten
        Public ID As Integer
        Public Datum As Date
        Public Zeit As DateTime
        Public Geschwindigkeit As Double
        Public Laenge As String
        Public Breite As String
    End Structure
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles _
      Button1.Click
 
        Dim sr As New StreamReader("D:\test\json.txt")
        Dim line As String = ""
 
        Do While (sr.Peek() >= 0)
 
            line = sr.ReadLine
 
            If line.Contains("id") Then
                Dim strucDaten As New Daten
                strucDaten.ID = GetValue(line)
                line = sr.ReadLine
                strucDaten.Datum = GetValue(line)
                line = sr.ReadLine
                strucDaten.Zeit = GetValue(line)
                line = sr.ReadLine
                strucDaten.Geschwindigkeit = GetValue(line)
                line = sr.ReadLine
                strucDaten.Laenge = GetValue(line)
                line = sr.ReadLine
                strucDaten.Breite = GetValue(line)
                WriteTextboxText(strucDaten)
            End If
        Loop
 
        sr.Close()
 
    End Sub
 
    Private Function GetValue(ByVal ToParse As String) As String
        ToParse = LTrim(ToParse)
        Dim arr() As String = ToParse.Split(" ")
        arr(1) = arr(1).Replace(Chr(34), "")
        arr(1) = arr(1).Replace(",", "")
        Return (arr(1))
    End Function
 
    Private Sub WriteTextboxText(ByVal strucDaten As Daten)
        If TextBox1.Text <> "" Then
            TextBox1.Text = TextBox1.Text & vbCrLf
        End If
        TextBox1.Text = TextBox1.Text & strucDaten.ID & vbCrLf
        TextBox1.Text = TextBox1.Text & strucDaten.Datum & vbCrLf
        TextBox1.Text = TextBox1.Text & strucDaten.Zeit & vbCrLf
        TextBox1.Text = TextBox1.Text & strucDaten.Geschwindigkeit & vbCrLf
        TextBox1.Text = TextBox1.Text & strucDaten.Laenge & vbCrLf
        TextBox1.Text = TextBox1.Text & strucDaten.Breite & vbCrLf
    End Sub

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: JSON Datei in formatierte Textdatei umwandeln 
Autor: KleinerMann
Datum: 06.11.20 19:40

Danke, funktioniert.

Wenn ich allerdings die Datei mittels OpenFile Dialog öffnen möchte bekomme ich den Fehler:
System.ArgumentException: "Illegales Zeichen im Pfad."

Dim ofd1 As New OpenFileDialog
 
        ofd1.ShowDialog()
 
        Dim json As String = File.ReadAllText(ofd1.FileName)
        Dim sr As New StreamReader(json)
 
        Dim line As String = ""
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: JSON Datei in formatierte Textdatei umwandeln 
Autor: effeff
Datum: 21.11.20 17:20

Wie heißt denn der Pfad genau?

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2020 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel