Нужна помощь в анализе JSON с использованием дженериков и атрибутов в C# без внешних библиотекC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Нужна помощь в анализе JSON с использованием дженериков и атрибутов в C# без внешних библиотек

Сообщение Anonymous »

Я работаю над анализатором JSON на C#, используя универсальные и пользовательские атрибуты, но у меня возникают проблемы с правильным анализом данных JSON в классах моей модели. Я хочу добиться этого без использования каких-либо внешних библиотек, просто используя встроенные функции .NET.
Вот модель, которую я создал для JSON:

Код: Выделить всё

using System;
using System.Collections.Generic;

namespace Test3.Model
{
public class Walks
{
[JsonProperty("id")]
public int Id { get; set; }

[JsonProperty("name")]
public string Name { get; set; }

[JsonProperty("distance")]
public double Distance { get; set; }

[JsonProperty("duration")]
public string Duration { get; set; }

[JsonProperty("difficulty")]
public string Difficulty { get; set; }

[JsonProperty("description")]
public string Description { get; set; }
}
}

Я также создал JsonPropertyAttribute, чтобы облегчить сопоставление:

Код: Выделить всё

using System;

namespace Test3
{
[AttributeUsage(AttributeTargets.Property)]
public class JsonPropertyAttribute : Attribute
{
public string Key { get; }
public JsonPropertyAttribute(string key)
{
Key = key;
}
}
}

Вот мой общий анализатор JSON:

Код: Выделить всё

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;

namespace Test3
{
public class GenericJsonParser
{
public static List ParseJson(string json) where T : new()
{
// Logic for parsing JSON...
}

private static T ParseSingleObject(string json) where T : new()
{
// Logic for parsing a single JSON object...
}

private static void SetPropertyValue(T obj, string key, string value)
{
// Logic to set property value using reflection...
}
}
}

JSON, который я пытаюсь проанализировать, выглядит следующим образом:

Код: Выделить всё

{
"walks": [
{
"id": 1,
"name": "River Walk",
"distance": 5.5,
"duration": "2 hours",
"difficulty": "Easy",
"description": "A scenic walk along the river with beautiful views."
},
{
"id": 2,
"name": "Mountain Trail",
"distance": 10.2,
"duration": "4 hours",
"difficulty": "Moderate",
"description": "A challenging trail through the mountains."
},
{
"id": 3,
"name": "Forest Loop",
"distance": 3.8,
"duration": "1 hour",
"difficulty": "Easy",
"description": "A peaceful walk through the forest."
}
]
}
Проблема, с которой я столкнулся:

Когда я пытаюсь проанализировать JSON, я могу получить только пустой список прогулок.

Я не уверен, правильно ли моя логика синтаксического анализа сопоставляет свойства с ключами JSON с помощью JsonPropertyAttribute.

Код: Выделить всё

string json = File.ReadAllText("path_to_your_json_file");
List walksList = GenericJsonParser.ParseJson(json);

Я не уверен, правильно ли моя логика синтаксического анализа сопоставляет свойства с ключами JSON с помощью JsonPropertyAttribute. Буду очень признателен за любую помощь в объяснении того, почему я могу получить пустой список!
Эта структура должна предоставлять достаточный контекст, чтобы другие могли понять вашу ситуацию и предложить соответствующую помощь. Прежде чем запускать анализатор, обязательно укажите реальный путь к файлу JSON и убедитесь, что он правильно отформатирован.

Подробнее здесь: https://stackoverflow.com/questions/790 ... t-external
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»