package devianter import ( "encoding/json" "strconv" "strings" ) type comments struct { Cursor string PrevOffset int HasMore, HasLess bool Total int Thread []struct { CommentId, ParentId, Replies, Likes int Posted time IsAuthorHighlited bool Desctiption string // упрощение структуры с комментами Comment string TextContent struct { Html struct { Markup string } } User struct { Username string IsBanned bool } } } // функция для обработки комментариев поста, пользователя, группы и многого другого func Comments( postid string, cursor string, page int, typ int, // 1 - комментарии поста; 4 - комментарии на стене группы или пользователя ) (cmmts comments) { for x := 0; x <= page; x++ { ujson( "dashared/comments/thread?typeid="+strconv.Itoa(typ)+ "&itemid="+postid+"&maxdepth=1000&order=newest"+ "&limit=50&cursor="+strings.ReplaceAll(cursor, "+", `%2B`), &cmmts, ) cursor = cmmts.Cursor // парсинг json внутри json for i := 0; i < len(cmmts.Thread); i++ { m, l := cmmts.Thread[i].TextContent.Html.Markup, len(cmmts.Thread[i].TextContent.Html.Markup) cmmts.Thread[i].Comment = m // если начало строки {, а конец }, то срабатывает этот иф if m[0] == 123 && m[l-1] == 125 { var content struct { Blocks []struct { Text string } } e := json.Unmarshal([]byte(m), &content) err(e) for _, a := range content.Blocks { cmmts.Thread[i].Comment = a.Text } } } } return }