- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究 Java 类介绍的最终项目。该项目的一部分涉及从 MusixMatch using their API 获取歌词片段。我可以使用 track.lyrics.get
从 API 获取歌词,但无法使用 tracks.snippet.get
获取片段。
我从这里找到的 Java 包装器开始:https://github.com/sachin-handiekar/jMusixMatch并添加了我自己的类以获取基于 track.snippet.get API 方法的代码片段。
当我运行该程序时,出现此错误:
java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at
line 1 column 102 path $.message.body
我的 getSnippet
方法和适用的类如下。它们基于原始包装器中的 getLyrics
方法和类。
public Snippet getSnippet(int trackID) throws MusixMatchException {
Snippet snippet = null;
SnippetGetMessage message = null;
Map<String, Object> params = new HashMap<String, Object>();
params.put(Constants.API_KEY, apiKey);
params.put(Constants.TRACK_ID, new String("" + trackID));
String response = null;
response = MusixMatchRequest.sendRequest(Helper.getURLString(
Methods.TRACK_SNIPPET_GET, params));
Gson gson = new Gson();
try {
message = gson.fromJson(response, SnippetGetMessage.class);
} catch (JsonParseException jpe) {
handleErrorResponse(response);
}
snippet = message.getContainer().getBody().getSnippet();
return snippet;
}
Snippet
类
package org.jmusixmatch.entity.snippet;
import com.google.gson.annotations.SerializedName;
/**
* Created by kyledhebert on 4/30/15.
* Objects of this clas represent a lyric snippet from the
* MusixMatch API.
*/
public class Snippet {
@SerializedName("snippet_language")
private int snippetLanguage;
@SerializedName("restricted")
private int restricted;
@SerializedName("instrumental")
private int instrumental;
@SerializedName("snippet_body")
private String snippetBody;
@SerializedName("script_tracking_url")
private String scriptTrackingURL;
@SerializedName("pixel_tracking_url")
private String pixelTrackingURL;
@SerializedName("html_tracking_url")
private String htmlTrackingURL;
@SerializedName("updated_time")
private String updatedTime;
public int getSnippetLanguage() {
return snippetLanguage;
}
public void setSnippetLanguage(int snippetLanguage) {
this.snippetLanguage = snippetLanguage;
}
public int getRestricted() {
return restricted;
}
public void setRestricted(int restricted) {
this.restricted = restricted;
}
public int getInstrumental() {
return instrumental;
}
public void setInstrumental(int instrumental) {
this.instrumental = instrumental;
}
public String getSnippetBody() {
return snippetBody;
}
public void setSnippetBody(String snippetBody) {
this.snippetBody = snippetBody;
}
public String getPixelTrackingURL() {
return pixelTrackingURL;
}
public void setPixelTrackingURL(String pixelTrackingURL) {
this.pixelTrackingURL = pixelTrackingURL;
}
public String getScriptTrackingURL() {
return scriptTrackingURL;
}
public void setScriptTrackingURL(String scriptTrackingURL) {
this.scriptTrackingURL = scriptTrackingURL;
}
public String getHtmlTrackingURL() {
return htmlTrackingURL;
}
public void setHtmlTrackingURL(String htmlTrackingURL) {
this.htmlTrackingURL = htmlTrackingURL;
}
public String getUpdatedTime() {
return updatedTime;
}
public void setUpdatedTime(String updatedTime) {
this.updatedTime = updatedTime;
}
}
SnippetGetBody
类:
package org.jmusixmatch.entity.snippet.get;
import com.google.gson.annotations.SerializedName;
import org.jmusixmatch.entity.snippet.Snippet;
public class SnippetGetBody {
@SerializedName("snippet")
private Snippet snippet;
public Snippet getSnippet() {
return snippet;
}
public void setSnippet(Snippet snippet) {
this.snippet = snippet;
}
}
SnippetGetContainer
类:
package org.jmusixmatch.entity.snippet.get;
import com.google.gson.annotations.SerializedName;
import org.jmusixmatch.entity.Header;
public class SnippetGetContainer {
@SerializedName("body")
private SnippetGetBody body;
@SerializedName("header")
private Header header;
public SnippetGetBody getBody() {
return body;
}
public void setBody(SnippetGetBody body) {
this.body = body;
}
public Header getHeader() {
return header;
}
public void setHeader(Header header) {
this.header = header;
}
}
SnippetGetMessage
类:
package org.jmusixmatch.entity.lyrics.get;
import com.google.gson.annotations.SerializedName;
public class SnippetGetMessage {
@SerializedName("message")
private SnippetGetContainer container;
public void setContainer(SnippetGetContainer container) {
this.container = container;
}
public SnippetGetContainer getContainer() {
return container;
}
}
最佳答案
我无法重现您的确切错误消息,但我确实发现了以下错误:snippet_language
是一个字符串,而不是 int
。将类型(以及关联的 getter 和 setter)更改为:
@SerializedName("snippet_language")
private String snippetLanguage;
我使用了来自 here 的示例 Json 响应使这项工作成功。如果这两项更改不能解决您的问题,请edit您的问题与实际的 Json 响应导致您的程序无法运行。
关于java - MusixMatch API 和 GSON : Using track. snippet.get 而不是 track.lyrics.get,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30017508/
在过去四年使用 Rails 1 和 2 后,我正在开发我的第一个“真正的”(而不是玩弄)rails 3 项目。在销毁操作的 js block 中,我想做一些典型的事情:删除页面上包含已删除资源的 di
我正在尝试使用谷歌代码片段测试工具测试以下代码片段,但我得到的只是“此页面不包含作者身份或丰富的代码片段标记”并且它变得非常烦人任何想法可能是什么问题?? Linas Located at Plaz
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我正在尝试按照UltiSnips的作者在他制作的http://www.youtube.com/watch?v=f_WQxYgK0Pk教学视频中以1:28的方式创建一个新的代码段 您如何将“endsni
“代码片段执行”是指无需启动 IDE 和创建虚拟项目即可编写几行代码、运行和测试它的能力。 这对于帮助人们使用小代码示例而无需创建项目、干净地编译所有内容、向他们发送代码片段和删除项目非常有用。 我不
是否可以在 Visual Studio Code 中添加自定义代码片段?如果是这样,怎么办? VSCode是基于Atom的,所以应该是可以的。 最佳答案 点击 > shift + 命令 + p 并输入
当我将视频上传到YouTube channel 时,我希望能够指定defaultLanguage。但是,docs似乎没有指定我应该放入哪种字符串。 string This property is co
是否有在线工具可以在开发团队之间共享和跟踪代码片段? 我的队友就坐在我旁边,而 GTalk 不足以粘贴较大的片段。 如何“复制粘贴”或拖动源文件或代码片段以在编码人员之间共享?它应该记住所有以前的片段
我通常需要在代码注释中写很多简短的代码,比如this。这可以在 Apple 的 Headerdoc 中使用吗?因为这种类型的代码表示法通常被大量使用,所以我相信有一种方便的方法来做到这一点,而不是标记
任何人都有一个片段(或知道哪里有)来创建片段?几周前我在 Visual Studio 片段的视频演示中看到了一个,但我不记得它在哪里。 最佳答案 片段说明: http://msdn.microsoft
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 9 个月前关闭。 Improve t
这是一个很简单的问题,但是除了自述文件外,我找不到任何文档。 我如何在Atom Editior中具有多个自定义片段: 例如我现在在我的snippets.cson中有这个 '.source.js':
我的意思是任何一段代码,或者一个用伪代码呈现的想法,一些非常重要的东西,现在几乎是艺术。 我打算在我的办公室周围放几幅画和纸上作品,描绘工程,而不是庆祝工程。我希望他们不像 e=mc2 那样普通,或者
我想在我的代码片段中注入(inject)当前的命名空间。有没有人有想法帮助我? ClassName 函数返回包含插入片段的类的名称。有命名空间的东西吗? 谢谢,法比安 片段示例:
最近我了解到 http://schema.org我将它实现到我的网站。 我有几个问题: 为什么我在丰富网页摘要测试工具中看到价格标签,但在 Google 结果中却看不到。看看结果:http://www
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
code snippets 是代码片段的意思,是 vscode 提供的根据某字符串快速补全一段代码的功能,可以提高写代码的效率。 vscode 的 snippets 是可以随项目共享
我想更好地组织我的文件,想知道我是否可以使用 comet 中的子目录、片段文件夹等? 类似于: code -> comet -> folder1
我正在使用从 coursera 上的 Scala courers 获取的一些 Scala 代码: package src.functional.week4 abstract class Boolean
我正在尝试覆盖 Atom 中的默认代码段,因为我想将默认脚本代码段从 到 我已将以下内容放入snippets.cson。 '.text.html': 'Comment': 'prefi
我是一名优秀的程序员,十分优秀!