Nano Hash - криптовалюты, майнинг, программирование

Разобрать запрос JSON в C#

Я хочу разработать веб-сайт на С#, который анализирует данные из запроса JSON, чтобы использовать их позже. До сих пор я нашел все библиотеки для использования, но после многих попыток синтаксический анализ не работает, и мне нужна ваша помощь, пожалуйста. Я использую визуальную студию 2010 профессионал.

Вот код С#.

using System;
using System.Collections.Generic;
using System.Net;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Json;
using System.Text;
using Newtonsoft.Json.Linq;

namespace TwitterFeed
{
public partial class URLReader : System.Web.UI.Page
{
    static string username = null;
    static string result = null;
    static string url = null;
    JsonTextParser parser;
    JsonObject obj;

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void ButtonTest_Click(object sender, EventArgs e)
    {
        username = TextBoxUsername.Text;    // takes the username imported by the user
        if (username == "")
        {
            TextBoxTest.Text = "Please enter a username...";    // informs the user that no username was imported
        }
        else
        {
            url = "JSONQuery.txt";
            try
            {
                WebClient client = new WebClient();     // The methods needed taking the content of the URL
                result = client.DownloadString(url);    // Putting the JSON content of the URL into a string

                JObject obj = JObject.Parse(result);
                Console.WriteLine("name: " + obj["name"]);
            } 
            catch (Exception ex)
            {
                TextBoxTest.Text = ex.Message;
            }
        }
    }
}

}

Это ошибка, которая отображается в выводе:

A first chance exception of type 'Newtonsoft.Json.JsonReaderException' occurred in Newtonsoft.Json.DLL

Вот код JSON:

    {  
   "created_at":"Sun Apr 08 14:51:37 +0000 2012",
   "id":189002564061241344,
   "id_str":"189002564061241344",
   "text":"Another invention from google. http:\/\/t.co\/Fcx13JrJ #google",
   "source":"web",
   "truncated":false,
   "in_reply_to_status_id":null,
   "in_reply_to_status_id_str":null,
   "in_reply_to_user_id":null,
   "in_reply_to_user_id_str":null,
   "in_reply_to_screen_name":null,
   "user":{  
      "id":132681798,
      "id_str":"132681798",
      "name":"Charilaos Eristikos",
      "screen_name":"EristikosTigka",
      "location":"Glasgow, Scotland",
      "url":null,
      "description":"Technology Lives Between Us.",
      "protected":false,
      "followers_count":52,
      "friends_count":133,
      "listed_count":2,
      "created_at":"Tue Apr 13 22:28:19 +0000 2010",
      "favourites_count":1,
      "utc_offset":0,
      "time_zone":"Edinburgh",
      "geo_enabled":false,
      "verified":false,
      "statuses_count":64,
      "lang":"en",
      "contributors_enabled":false,
      "is_translator":false,
      "profile_background_color":"FFFFFF",
      "profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/209319404\/8.jpg",
      "profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/209319404\/8.jpg",
      "profile_background_tile":true,
      "profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/1632508237\/380352_2437786137920_1049741902_2747933_696669280_n_normal.jpg",
      "profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1632508237\/380352_2437786137920_1049741902_2747933_696669280_n_normal.jpg",
      "profile_link_color":"00B093",
      "profile_sidebar_border_color":"9E9E9E",
      "profile_sidebar_fill_color":"DDEEF6",
      "profile_text_color":"000000",
      "profile_use_background_image":true,
      "show_all_inline_media":false,
      "default_profile":false,
      "default_profile_image":false,
      "following":null,
      "follow_request_sent":null,
      "notifications":null
   },
   "geo":null,
   "coordinates":null,
   "place":null,
   "contributors":null,
   "retweet_count":0,
   "entities":{  
      "hashtags":[  
         {  
            "text":"google",
            "indices":[  
               52,
               59
            ]
         }
      ],
      "urls":[  
         {  
            "url":"http:\/\/t.co\/Fcx13JrJ",
            "expanded_url":"http:\/\/phys.org\/news\/2012-04-google-floor-app-venue-owners.html",
            "display_url":"phys.org\/news\/2012-04-g\u2026",
            "indices":[  
               31,
               51
            ]
         }
      ],
      "user_mentions":[  

      ]
   },
   "favorited":false,
   "retweeted":false,
   "possibly_sensitive":false
},
{  
   "created_at":"Thu Apr 05 16:24:08 +0000 2012",
   "id":187938685436698624,
   "id_str":"187938685436698624",
   "text":"Very interesting for computing science students http:\/\/t.co\/xp4lq2Y1 #csstudents",
   "source":"web",
   "truncated":false,
   "in_reply_to_status_id":null,
   "in_reply_to_status_id_str":null,
   "in_reply_to_user_id":null,
   "in_reply_to_user_id_str":null,
   "in_reply_to_screen_name":null,
   "user":{  
      "id":132681798,
      "id_str":"132681798",
      "name":"Charilaos Eristikos",
      "screen_name":"EristikosTigka",
      "location":"Glasgow, Scotland",
      "url":null,
      "description":"Technology Lives Between Us.",
      "protected":false,
      "followers_count":52,
      "friends_count":133,
      "listed_count":2,
      "created_at":"Tue Apr 13 22:28:19 +0000 2010",
      "favourites_count":1,
      "utc_offset":0,
      "time_zone":"Edinburgh",
      "geo_enabled":false,
      "verified":false,
      "statuses_count":64,
      "lang":"en",
      "contributors_enabled":false,
      "is_translator":false,
      "profile_background_color":"FFFFFF",
      "profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/209319404\/8.jpg",
      "profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/209319404\/8.jpg",
      "profile_background_tile":true,
      "profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/1632508237\/380352_2437786137920_1049741902_2747933_696669280_n_normal.jpg",
      "profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1632508237\/380352_2437786137920_1049741902_2747933_696669280_n_normal.jpg",
      "profile_link_color":"00B093",
      "profile_sidebar_border_color":"9E9E9E",
      "profile_sidebar_fill_color":"DDEEF6",
      "profile_text_color":"000000",
      "profile_use_background_image":true,
      "show_all_inline_media":false,
      "default_profile":false,
      "default_profile_image":false,
      "following":null,
      "follow_request_sent":null,
      "notifications":null
   },
   "geo":null,
   "coordinates":null,
   "place":null,
   "contributors":null,
   "retweet_count":0,
   "entities":{  
      "hashtags":[  
         {  
            "text":"csstudents",
            "indices":[  
               69,
               80
            ]
         }
      ],
      "urls":[  
         {  
            "url":"http:\/\/t.co\/xp4lq2Y1",
            "expanded_url":"http:\/\/googleblog.blogspot.co.uk\/2012\/03\/new-kind-of-summer-job-open-source.html",
            "display_url":"googleblog.blogspot.co.uk\/2012\/03\/new-ki\u2026",
            "indices":[  
               48,
               68
            ]
         }
      ],
      "user_mentions":[  

      ]
   },
   "favorited":false,
   "retweeted":false,
   "possibly_sensitive":false
}

Это скрипт для твиттера

26.08.2012

  • Проверьте внутреннее исключение. 26.08.2012
  • Нет; просто проверьте сообщение об исключении. 26.08.2012
  • Дополнительный текст, обнаруженный после завершения чтения содержимого JSON: ,. Путь '', строка 1, позиция 2148. Это сообщение. ничего другого не увидел 26.08.2012
  • Пожалуйста, покажите нам JSON. 26.08.2012
  • Я обновил вопрос с включенным кодом JSON. 26.08.2012
  • текст JSON является неверным JSON, как подтвердил @zender, сначала исправьте его. 26.08.2012

Ответы:


1

Это недопустимый json, он содержит «список» объектов. Вы можете решить проблему следующим образом:

result = client.DownloadString(url);    // Putting the JSON content of the URL into a string
result = @"{ ""data"" : ["+result+"]}";

JObject obj = JObject.Parse(result);
26.08.2012
  • Я сделал это, но теперь другая проблема: Error reading JObject from JsonReader. Current JsonReader item is not an object: StartArray. Path '', line 1, position 1. 26.08.2012
  • Уже лучше, но все равно ничего не печатает 26.08.2012
  • Ты смеешься? Вы говорите о строке Console.Writeline? Прояви инициативу, чувак, и потрудись подумать. 26.08.2012
  • вы можете попробовать это Console.WriteLine("name: " + obj["data"][0]["name"]); Но помните, я понятия не имею, что такое Jobject, и именно в этом ваша проблема. Дерзайте и посмотрите на это в отладчике, потому что вы достигли совершенно ленивого плохого пользователя SO. 26.08.2012
  • Чувак, расслабься, я новичок в С#, поэтому и спрашиваю. Если вы думаете, что я ленивый, то почему вы ответили, если не знаете, что такое JObject? 27.08.2012
  • Я ответил, потому что хочу помочь. Большинство людей не будут знать, что это такое, поскольку это случайная библиотека, а не стандартная C#. Newtonsoft.Json.Linq не является стандартной библиотекой C#. 27.08.2012
  • Да, я знаю это, но большинство вопросов, которые я видел здесь, на stackoverflow.com, касаются этой библиотеки, и именно по этой причине я попробовал ее. В любом случае спасибо за помощь 28.08.2012

  • 2

    Ваш JSON неверный.
    Проверьте его на каком-нибудь синтаксическом анализаторе JSON в Интернете, например http://json.parser.online.fr/

    26.08.2012
  • На самом деле я нашел этот код в Интернете, я не писал его сам. Большое спасибо за онлайн-парсер JSON. Я искал что-то подобное, но, поскольку я новичок в JSON, я не знал, как его искать. 26.08.2012

  • 3

    Строка 86 закрывает литерал объекта. Затем должен прийти EOF, но у вас есть другой литерал объекта. Вы хотели создать массив?

    26.08.2012
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..