Vložit data z textboxu do JSON – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vložit data z textboxu do JSON – .NET – Fórum – Programujte.comVložit data z textboxu do JSON – .NET – Fórum – Programujte.com

 

itlady0
Newbie
20. 12. 2021   #1
-
0
-

Chci použít C# winforms na tvorbu jednoduché aplikace, kde jsou očekávány vstupy od uživatele ve formě textboxů. Tato data pak chci uložit do JSON.

Mám objekt UserInput, kam se budou data ukládat:

public class UserInput
{
      public string CisloP { get; set; }
      public string Specifikace { get; set; }
      public string DatumO { get; set; }

        public UserInput()
        {
        }

Pak mám tento List, ale když tam dát přímo textbox.text, tak to nejde.

 List<UserInput> ui = new List<UserInput>
            {
                { 
                    new UserInput {
                        CisloP = "textBox1.Text",
                        Specifikace = "textBox2.Text",
                        DatumO = "textBox3.Text"
                    }
                }
            };
 

Nevím, jestli použít parametrický konstruktor nebo nějaký jiný způsob jak předat hodnotu z textbox.text do json.

Nahlásit jako SPAM
IP: 212.102.38.–
BDS+3
Věrný člen
20. 12. 2021   #2
-
0
-

JSON neznám, ale CisloP = "textBox1.Text".. je blbost. Pokud chceš přidat obsah boxu tak takto: CisloP = textBox1.Text... bez uvozovek

Nahlásit jako SPAM
IP: 185.69.68.–
W11 :)
itlady0
Newbie
20. 12. 2021   #3
-
0
-

Jo, to je jen chyba přepisu ... ani bez uvozovek to nefunguje.

Nahlásit jako SPAM
IP: 212.102.38.–
gna
~ Anonymní uživatel
1891 příspěvků
20. 12. 2021   #4
-
0
-

Pokud ti to nefunguje, tak se ty proměnné pokoušíš použít z místa, kde neexistují.

Nahlásit jako SPAM
IP: 213.211.51.–
BDS+3
Věrný člen
20. 12. 2021   #5
-
0
-

#3 itlady
Co přesně ti nefunguje?

Tady je ukázka od MS: 

using System;
using System.Text.Json;

namespace SerializeBasic
{
    public class WeatherForecast
    {
        public DateTimeOffset Date { get; set; }
        public int TemperatureCelsius { get; set; }
        public string Summary { get; set; }
    }

    public class Program
    {
        public static void Main()
        {
            var weatherForecast = new WeatherForecast
            {
                Date = DateTime.Parse("2019-08-01"),
                TemperatureCelsius = 25,
                Summary = "Hot"
            };

            string jsonString = JsonSerializer.Serialize(weatherForecast);

            Console.WriteLine(jsonString);
        }
    }
}
// output:
//{"Date":"2019-08-01T00:00:00-07:00","TemperatureCelsius":25,"Summary":"Hot"}
Nahlásit jako SPAM
IP: 185.69.68.–
W11 :)
itlady0
Newbie
20. 12. 2021   #6
-
0
-

Když vezmu poslední kod, tak mi jde o to, aby se např. klíči TemperatureCelsius přiřadila hodnota, kterou zadal uživatel do textboxu v nějakém formuláři. 

Nahlásit jako SPAM
IP: 212.102.38.–
BDS+3
Věrný člen
20. 12. 2021   #7
-
0
-

#6 itlady
A děláš to v NET.6 ? 

Nahlásit jako SPAM
IP: 185.69.68.–
W11 :)
itlady0
Newbie
20. 12. 2021   #8
-
0
-

Dělám to jako semestrálku na VOŠ pomocí C# ve Visual Studio

Nahlásit jako SPAM
IP: 212.102.38.–
BDS+3
Věrný člen
20. 12. 2021   #9
-
0
-

#8 itlady
To jo, ale můžeš to dělat v .NET Framework 4.5.2, .NET Framework 4.7.2.... nebo NET6

Nahlásit jako SPAM
IP: 185.69.68.–
W11 :)
gna
~ Anonymní uživatel
1891 příspěvků
20. 12. 2021   #10
-
0
-

Když řeší problém s inicializací třídy, tak to není verzí .NETu..

nějakém formuláři. Jakém? Co přesně děláš, co ti nefunguje? Jakou chybu to hlásí?

Nahlásit jako SPAM
IP: 213.211.51.–
BDS+3
Věrný člen
20. 12. 2021   #11
-
0
-

Toto jsem teď zkoušel ve WinForms NET6: 

using System.Text.Json;

namespace WinFormsApp2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

        }

        List<UserInput> ui = new List<UserInput>();

        private void button1_Click(object sender, EventArgs e)
        {
            textBox3.Text = DateTime.Now.ToString();
            ui.Add(new UserInput() { CisloP = textBox1.Text, Specifikace = textBox2.Text, DatumO = textBox3.Text });
            string msg = JsonSerializer.Serialize(ui[ui.Count-1]);
            MessageBox.Show(msg);
        }
    }

    public class UserInput
    {
        public string CisloP { get; set; }
        public string Specifikace { get; set; }
        public string DatumO { get; set; }
    }
}

(upravil jsem si tvůj kod kvuli testu)

funguje to podle očekávání

Nahlásit jako SPAM
IP: 185.69.68.–
W11 :)
BDS+3
Věrný člen
20. 12. 2021   #12
-
0
-

#10 gna
to jistě, ale jde o to co ze JSON je podporované, v určitých verzích .netu

To co mu přesně nefunguje nenapsal.

Nahlásit jako SPAM
IP: 185.69.68.–
W11 :)
JerryM0
Věrný člen
20. 12. 2021   #13
-
0
-

jestli jsme to cšichni správně pochopili tak studuješ CVUT FEL a děláš semestrálku ... a hledáš asi tohle

https://stackoverflow.com/questions/16921652/how-to-write-a-json-file-in-c/16921677

takže třeba ve MSVS 2019 a s knihovnou .NET 4.7.2 si otevřeš projekt WinForms .NET framework (ten strarý) a pak klikneš ve VS na menu Tools/Nuget package manager/Manage NuGet Packages a pak v tom okně co se otevře zvolíš TabPage Browse co je vlevo nahoře a do vyhledávacího okénka hned pod tim nápisem Browse zadáš System.Text.Json a ono ti to uplně samo od sebe najde knihovnu System.Text.Json a tu do projektu přidáš - vpravo v okénku zaškrtneš tvuj projekt (2x) a pak klikneš na Install a automaticky se ti knihovna přidá no a pak

do zdrojovýho textu zapíšeš klauzule:

using System.Text.Json;
using System.Text.Json.Serialization;
using System.IO;

no a celej zdroják by měl vypadat takhle:

 https://uloz.to/file/8ilB93JXEPNc/011-winforms-net5-zip#!ZJIyLmR1ZwL4AzSuMwqxAJV4Amx1L05DEJ84FKchBUu3AGV1

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;

using System.Text.Json; using System.Text.Json.Serialization; using System.IO;

namespace APP {     public partial class Form1 : Form     {

        List<UserInput> ui = null;         UserInput item = null;

        public Form1()         {             InitializeComponent();

            ui = new List<UserInput>();

        }// public Form1()

        ~Form1()         {             InitializeComponent();

            while (ui.Count != 0)             {                 ui[0] = null;                 ui.RemoveAt(0);

            }// while             ui = null;

        }// ~Form1()

        private void button1_Click(object sender, EventArgs e)         {

            item = new UserInput();

            item.CisloP = this.richTextBox1.Lines[0];             item.Specifikace = this.richTextBox2.Lines[0];             item.DatumO = this.richTextBox3.Lines[0];

            ui.Add(item);

            // tisk prvni polozka seznamu ui - index 0             Console.WriteLine("{0} {1} {2}", ui[0].CisloP, ui[0].Specifikace, ui[0].DatumO);

            string json = JsonSerializer.Serialize(ui);             File.WriteAllText(@"C:\2\path.json", json);

            json = null;

        }// void button1_Click(object sender, EventArgs e)

    }// public partial class Form1 : Form

    public class UserInput     {         public string CisloP { get; set; }         public string Specifikace { get; set; }         public string DatumO { get; set; }

        public UserInput()         {             CisloP = "";             Specifikace = "";             DatumO = "";

        }// public UserInput()

    }// public class UserInput

}// namespace APP

no neni to bezva když to někajej mamlas udělá celý za tebe a uplně zadara ??? .. nicméně ...

Je vidět že si zdatný programátor C# WinForms .NET 4.7.2, ale rád bych tě upozornil, že je to zastaralá technologie pocházející z roku 2001 a měl bys ses tedy orientovat na C# WinForms .NET6, což je technologie z roku cca 2019 ale ...  kterou v čr nikdo nechce, takže na třetí pokus se dostaneš k C# WPF .NET 6 MVVM, což občas sem tam nějaká firma chce ALE :)  hodí se to jen na desktopové aplikace pro Windows :) takže to NENI multiplatformní ... což jsi samozřejmě věděl :) :) :) .. takže časem asi přejdeš k C++/Qt jakožto zarytý chtivec programování v C++ ....

a protože v dnešní době sou žádoucí hlavně weboví programátoři v Javě a PHP a HTML5/CSS3+JavaScript atd... tak ty jakožto zcela nový a nezkušený programátor v C# WPF .NET 6 MVVM chcípneš hlady protože ani nevíš co je to MVVM a jak se to dělá .... už chápeš jo ?

takže mnohem lepší bude když pudeš studovat práva nebo ekonomii ... takovej právník ten si vydělá minimálně 2000Kč na hodinu hrubýho ... to programátor nedostane ani kdyby psal rukama a nohama najednou...

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:48e:dbf9:462b:6dac...–
gna
~ Anonymní uživatel
1891 příspěvků
20. 12. 2021   #14
-
0
-

#13 JerryM
Soryjako, ale ty seš fakt kokot až na půdu.

Nahlásit jako SPAM
IP: 213.211.51.–
20. 12. 2021   #15
-
0
-

1. Inicializaci třídy pomocí param. konstruktoru.
2. Převod na JSON je všehovšudy na dva řádky kódu, někde jsem vygůglil a následně použil na DataSet.

string jsonData = JsonConvert.SerializeObject(dataSet, new IsoDateTimeConverter() { DateTimeFormat = dateTimeFormat });

bylo to nějak takhle. Hledej JsonConvert.SerializeObject

hu
 

Nahlásit jako SPAM
IP: 195.178.67.–
itlady0
Newbie
20. 12. 2021   #16
-
0
-

Ok, díky za rady, vyzkouším.

Nahlásit jako SPAM
IP: 212.102.38.–
JerryM0
Věrný člen
20. 12. 2021   #17
-
0
-

#14 gna
jáá víííííííííím jáá víííííííííím jáá víííííííííím jáá víííííííííím jáá víííííííííím  ale jde mi to ... jsem v tom dobrý .. wou wou ... :) :) :) :) 

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:48e:dbf9:462b:6dac...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 42 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý