C # JSON 직렬화 / 비 직렬화-INPUT 문제

피질

JSON의 직렬화 및 역 직렬화에 문제가 있습니다. 다음과 같은 JSON 파일에서 읽을 두 가지 작업을 수행했습니다.

[
  {
    "ID": 1,
    "OIB": 123456789,
    "ime": "name",
    "prezime": "surname",
    "grad": "city"
  }
]

이제 새 사용자 정보가있는 ID 2의 다른 클라이언트를 추가해야합니다. 이 JSON 파일을 문제없이 읽을 수 있지만 같은 파일에 쓰는 데 갇혀 있습니다.

public struct Klijent
{
    public int ID { get; set; }
    public long OIB { get; set; }
    public string ime { get; set; }
    public string prezime { get; set; }
    public string grad { get; set; }
}

JSON의 "FetchClient"

public static List<Klijent> DohvatiKlijente()
{
    List<Klijent> lKlijent = new List<Klijent>();
    StreamReader klijent = new StreamReader("x");
    string sJson = "";
    using (klijent)
    {
        sJson = klijent.ReadToEnd();
        lKlijent = JsonConvert.DeserializeObject<List<Klijent>>(sJson);
    }
    return lKlijent;
}

JSON에 "AddClient"

OIB -> personal identificator
ID -> should go +1 with every entry of client
grad -> city
ime -> name
prezime -> surname

public static void DodavanjeKlijenata()
{

    Console.Write("Unesite OIB klijenta: ");
    string pOIB = Console.ReadLine();
    long nullOIB = 0;
    long.TryParse(pOIB, out nullOIB);
    int id = 0;
    Console.Write("Unesite ime klijenta: ");
    string ime1 = Console.ReadLine();
    Console.Write("Unesite prezime klijenta: ");
    string prezime1 = Console.ReadLine();
    Console.Write("Unesite grad klijenta: ");
    string grad1 = Console.ReadLine();
    List<Klijent> lKlijent = DohvatiKlijente();
    foreach (var Klijent in lKlijent)
    {
        id = Klijent.ID + 1;
    }
    Klijent dKlijent = new Klijent()
    {
        ID = id,
        OIB = nullOIB,
        ime = ime1,
        prezime = prezime1,
        grad = grad1
    };

        var serializer = new JsonSerializer();

        using (var sw = new StreamWriter("x"))
        using (JsonWriter writer = new JsonTextWriter(sw))
        {
            serializer.Serialize(writer, dKlijent);
        }
}

이 코드는 작동하지만 JSON 파일이 한 줄로만되어있을 때마다 삭제되는 것 같습니다. 여러 줄로 나누고 싶습니다.

감사합니다 :)

Anu Viswan

여기에서해야 할 두 가지가 있습니다

새 클라이언트가 기존 목록에 추가되었는지 확인

이를 위해 새 클라이언트를 목록에 추가 할 수 있습니다.

lKlijent.Add(dKlijent);

이제 목록을 직렬화해야합니다. lKlijent

using (JsonWriter writer = new JsonTextWriter(sw))
{
    serializer.Serialize(writer, lKlijent);
}

서식

포맷을 위해 포맷 설정을 사용할 수 있습니다. 예를 들면

var serializer = new JsonSerializer() { Formatting = Formatting.Indented} ;

추가 댓글

1. ID 계산

다음 루프를 사용하여 새 ID를 계산하는 대신

foreach (var Klijent in lKlijent)
{
        id = Klijent.ID + 1;
}

Enumerable.Last()목록에서 마지막 클라이언트를 가져 오는 데 사용할 수 있습니다 . 예를 들면

var id = lKlijent?.Any()!=true? 0:lKlijent.Last().ID;

2. Get Clients 메서드 다시 작성

DohvatiKlijente메서드는 다음과 같이 다시 작성할 수 있습니다.

public static List<Klijent> DohvatiKlijente()
{
    return JsonConvert.DeserializeObject<List<Klijent>>(File.ReadAllText("C:\\Users\\Hrvoje\\Desktop\\Polica Osiguranja MAIN\\Polica Osiguranja\\klijent.json"));
}

마찬가지로 파일에 다시 쓰기는 다음과 같이 단순화 할 수 있습니다.

var jsonString = JsonConvert.SerializeObject(lKlijent,Newtonsoft.Json.Formatting.Indented);
File.WriteAllText(outputFilePath,jsonString);

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C # JSON 직렬화 / 비 직렬화-INPUT 문제

분류에서Dev

C ++ JSON 직렬화

분류에서Dev

C # / JSON 개체 직렬화, 역 직렬화 및 대 / 소문자 문제 없음

분류에서Dev

JSON 역 직렬화 구문 분석 C #

분류에서Dev

JSON C # 역 직렬화

분류에서Dev

c # Json 역 직렬화 식

분류에서Dev

C # : JSON 역 직렬화

분류에서Dev

C #-SNS 용 JSON 직렬화

분류에서Dev

JSON C # 역 직렬화

분류에서Dev

JSON C # 역 직렬화

분류에서Dev

파일에서 개체를 역 직렬화 및 재 직렬화하는 데 문제가있는 C # JSON.net

분류에서Dev

Spring JSON 역 직렬화 문자 제한

분류에서Dev

튜플의 JSON 역 직렬화 문제?

분류에서Dev

역 직렬화 된 클래스가 비어 있음-JSON C #

분류에서Dev

객체 목록 직렬화 / 비 직렬화를위한 JSON Newtonsoft C # 모범 사례

분류에서Dev

직렬화 문제

분류에서Dev

C # XML 역 직렬화 문제

분류에서Dev

ns1 : C # 역 직렬화 문제

분류에서Dev

특성없는 C # JSON 직렬화 및 역 직렬화

분류에서Dev

C #에서 JSON 파일 역 직렬화 및 직렬화

분류에서Dev

C #의 나머지 서비스에서 반환 된 JSON을 구문 분석 / 비 직렬화하는 방법

분류에서Dev

APEX ENUM JSON으로 직렬화 및 직렬화 해제

분류에서Dev

PowerBuilder는 WordPress dbms에서 JSON 직렬화 / 직렬화 해제

분류에서Dev

여러 줄 JSON을 C # 개체로 직렬화 해제

분류에서Dev

JSON 문자열을 C # 및 Unity의 개체로 역 직렬화

분류에서Dev

AWS Lambda에서 중첩 된 JSON 문자열 역 직렬화 (C #)

분류에서Dev

C # 목록으로 JSON 문자열 역 직렬화

분류에서Dev

json 문자열을 개체 C # .net으로 역 직렬화

분류에서Dev

C # 직렬화 : xml이 비어 있음

Related 관련 기사

뜨겁다태그

보관