{"id":1345,"date":"2021-04-11T21:04:17","date_gmt":"2021-04-11T12:04:17","guid":{"rendered":"https:\/\/dalomo.net\/blog\/?p=1345"},"modified":"2021-04-11T21:04:17","modified_gmt":"2021-04-11T12:04:17","slug":"viewmodel%e3%81%a8%e3%81%8blivedata%e3%81%a8%e3%81%8bstate%e3%81%a8%e3%81%8b%e5%85%a8%e7%84%b6%e3%82%8f%e3%81%8b%e3%82%89%e3%81%aa%e3%81%84","status":"publish","type":"post","link":"https:\/\/dalomo.net\/blog\/2021\/04\/11\/1345\/","title":{"rendered":"ViewModel\u3068\u304bLiveData\u3068\u304bState\u3068\u304b\u5168\u7136\u308f\u304b\u3089\u306a\u3044"},"content":{"rendered":"<h1>ViewModel\u3068\u304bLiveData<\/h1>\n<p>\u3088\u304f\u308f\u304b\u3089\u306a\u3044\u3002\u30df\u30fc\u30e0\u3068\u304b\u3058\u3083\u306a\u304f\u3066\u307b\u3093\u3068\u306b\u3088\u304f\u308f\u304b\u3089\u306a\u3044\u3002\u7279\u306b\u76ca\u306b\u306a\u308b\u3088\u3046\u306a\u4e8b\u306f\u66f8\u3044\u3066\u306a\u3044\u3002<\/p>\n<h2>\u30b5\u30f3\u30d7\u30eb<\/h2>\n<p>build.gradle\u306b<\/p>\n<pre>implementation \"androidx.compose.runtime:runtime-livedata:$compose_version\"<\/pre>\n<p>\u3092\u8ffd\u8a18\u3002<\/p>\n<p><a href=\"https:\/\/developer.android.com\/jetpack\/compose\/state#viewmodel-state\">https:\/\/developer.android.com\/jetpack\/compose\/state#viewmodel-state<\/a><\/p>\n<p>\u306e\u3092\u53c2\u8003\u306b\u3001MainActivity.kt\u3092<\/p>\n<pre>@Composable\r\nfun HelloScreen(jcViewModel: JetComViewModel = JetComViewModel()) {\r\n    val name: String by jcViewModel.name.observeAsState(\"\")\r\n    HelloContent(name = name, onNameChange = { jcViewModel.onNameChange(it) })\r\n}\r\n\r\n@Composable\r\nfun HelloContent(name: String, onNameChange: (String) -&gt; Unit) {\r\n    Column(modifier = Modifier.padding(16.dp)) {\r\n        Text(\r\n            text = \"Hello, $name\",\r\n            modifier = Modifier.padding(bottom = 8.dp),\r\n            style = MaterialTheme.typography.h5\r\n        )\r\n        OutlinedTextField(\r\n            value = name,\r\n            onValueChange = onNameChange,\r\n            label = { Text(\"Name\") }\r\n        )\r\n    }\r\n}<\/pre>\n<p>\u305d\u3093\u3067JetComViewModel.kt\u3092<\/p>\n<pre>class JetComViewModel : ViewModel() {\r\n\r\n    private val _name = MutableLiveData(\"\")\r\n    val name: LiveData&lt;String&gt; = _name\r\n\r\n    fun onNameChange(newName: String) {\r\n        _name.value = newName\r\n    }\r\n    \r\n}<\/pre>\n<p>\u30af\u30e9\u30b9\u540d\u3057\u304b\u5909\u3048\u3066\u306a\u3044\u3002<\/p>\n<p><iframe loading=\"lazy\" title=\"YouTube video player\" src=\"https:\/\/www.youtube.com\/embed\/3AGCY_80o-8\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>\u3061\u3083\u3093\u3068\u52d5\u304f\u3002<\/p>\n<p>ViewModel\u5185\u3067<\/p>\n<pre>private val _name = MutableLiveData(\"\")<\/pre>\n<p>MutableLiveData\u306e\u5909\u6570\u3092\u5185\u90e8\u3067\u7528\u610f\u3002<\/p>\n<pre>val name: LiveData&lt;String&gt; = _name<\/pre>\n<p>LiveData\u3067\u5916\u90e8\u306b\u516c\u958b\u3002<\/p>\n<p>Main\u3067<\/p>\n<pre>val name: String by jcViewModel.name.observeAsState(\"\")<\/pre>\n<p>\u3067\u76e3\u8996\u3059\u308b\u3002<\/p>\n<p>OutlinedTextField\u3067\u6587\u5b57\u3092\u5165\u529b\u3059\u308b\u3068<\/p>\n<pre>OutlinedTextField(\r\n    value = name,\r\n    onValueChange = onNameChange,\r\n    label = { Text(\"Name\") }\r\n)<\/pre>\n<p>onValueChange\u304c\u547c\u3070\u308c\u308b\u3002\u3053\u3053\u3067\u306fonNameChange\u304c\u5b9f\u884c\u3055\u308c\u308b\u3002onNameChange\u306f<\/p>\n<pre>fun HelloContent(name: String, onNameChange: (String) -&gt; Unit) {<\/pre>\n<p>\u3053\u306e\u95a2\u6570\u306e\u5f15\u6570\u3067<\/p>\n<pre>HelloContent(name = name, onNameChange = { jcViewModel.onNameChange(it) })<\/pre>\n<p>\u547c\u3073\u51fa\u3057\u6642\u306bviewmodel\u306eonNameChange\u304c\u5b9f\u884c\u3055\u308c\u308b\u3002viewmodel\u306eonNameChange\u306f<\/p>\n<pre>fun onNameChange(newName: String) {\r\n    _name.value = newName\r\n}<\/pre>\n<p>\u6e21\u3055\u308c\u305f\u5024\u3067<\/p>\n<pre>private val _name = MutableLiveData(\"\")<\/pre>\n<p>\u3068\u5b9a\u7fa9\u3055\u308c\u305f_name\u3078\u4ee3\u5165\u3057\u3066\u66f4\u65b0\u3059\u308b\u3002_name\u306f<\/p>\n<pre>val name: LiveData&lt;String&gt; = _name<\/pre>\n<p>\u306a\u306e\u3067\u3064\u307e\u308aname\u304c\u5909\u66f4\u3092\u691c\u77e5\uff1f\u3059\u308b\u306e\u304b\u306a\uff1f\u3067\u3001name\u304c\u66f4\u65b0\u3057\u305f\u306e\u3067<\/p>\n<pre>HelloContent(name = name, onNameChange = { jcViewModel.onNameChange(it) })<\/pre>\n<p>name\u3092\u53d7\u3051\u53d6\u3063\u3066<\/p>\n<pre>Text(\r\n    text = \"Hello, $name\",\r\n    modifier = Modifier.padding(bottom = 8.dp),\r\n    style = MaterialTheme.typography.h5\r\n)<\/pre>\n<p>\u8868\u793a\u3059\u308b\u3002\u3053\u3093\u306a\u611f\u3058\u306a\u3093\u304b\u306a\u30fc\u3002<\/p>\n<h2>MutableLiveData\u306b\u914d\u5217\u3092\u4f7f\u3044\u305f\u3044<\/h2>\n<p>\u3067\u3001\u3053\u308c\u3092\u914d\u5217\u3067\u4f7f\u3044\u305f\u3044\u306e\u3002\u3067\u3082\u306d\u3001\u516c\u5f0f\u306b\u601d\u3044\u3063\u304d\u3057<\/p>\n<p><a href=\"https:\/\/developer.android.com\/jetpack\/compose\/state#use-other-types-of-state-in-jetpack-compose\">https:\/\/developer.android.com\/jetpack\/compose\/state#use-other-types-of-state-in-jetpack-compose<\/a><\/p>\n<blockquote><p><b>\u6ce8\u610f:<\/b>\u00a0Compose \u306e\u00a0<code dir=\"ltr\" translate=\"no\">ArrayList&lt;T&gt;<\/code>\u00a0\u3084\u00a0<code dir=\"ltr\" translate=\"no\">mutableListOf()<\/code>\u00a0\u306e\u3088\u3046\u306a\u53ef\u5909\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u72b6\u614b\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u3068\u3001\u30a2\u30d7\u30ea\u3067\u8aa4\u3063\u305f\u30c7\u30fc\u30bf\u3084\u53e4\u3044\u30c7\u30fc\u30bf\u304c\u30e6\u30fc\u30b6\u30fc\u306b\u8868\u793a\u3055\u308c\u308b\u73fe\u8c61\u304c\u767a\u751f\u3057\u307e\u3059\u3002<\/p>\n<p><code dir=\"ltr\" translate=\"no\">ArrayList&lt;T&gt;<\/code>\u00a0\u3084\u53ef\u5909\u30c7\u30fc\u30bf\u30af\u30e9\u30b9\u306a\u3069\u306e\u975e\u30aa\u30d6\u30b6\u30fc\u30d0\u30d6\u30eb\u306a\u53ef\u5909\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u3001Compose \u306b\u3088\u308b\u89b3\u6e2c\u304c\u4e0d\u53ef\u80fd\u3067\u3042\u308a\u3001\u5909\u66f4\u3055\u308c\u308b\u3068\u518d\u30b3\u30f3\u30dd\u30b8\u30b7\u30e7\u30f3\u304c\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u975e\u30aa\u30d6\u30b6\u30fc\u30d0\u30d6\u30eb\u306a\u53ef\u5909\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f7f\u7528\u3059\u308b\u4ee3\u308f\u308a\u306b\u3001<code dir=\"ltr\" translate=\"no\">State&lt;List&lt;T&gt;&gt;<\/code>\u00a0\u3084\u4e0d\u5909\u306e\u00a0<code dir=\"ltr\" translate=\"no\">listOf()<\/code>\u00a0\u306a\u3069\u306e\u30aa\u30d6\u30b6\u30fc\u30d0\u30d6\u30eb\u306a\u30c7\u30fc\u30bf\u30db\u30eb\u30c0\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u3059\u3059\u3081\u3057\u307e\u3059\u3002<\/p><\/blockquote>\n<p>\u3084\u3081\u3068\u3051\u3001\u3068\u66f8\u304b\u308c\u3066\u3044\u308b\u3002\u3067\u3082\u3057\u305f\u3044\u3002\u3002\u3002<\/p>\n<p>\u5909\u3048\u3066\u307f\u3066\u306f\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8aad\u307f\u3001\u3092\u7e70\u308a\u8fd4\u305d\u3046\u3002<\/p>\n<pre>private val _name = MutableLiveData(mutableListOf(\"\",\"\",\"\"))<\/pre>\n<p>\u3066\u3001\u8981\u7d20\u65703\u306e\u306b\u3057\u305f\u3089<\/p>\n<pre>val name: LiveData&lt;String&gt; = _name<\/pre>\n<p>\u304c<\/p>\n<blockquote><p>Type mismatch: inferred type is MutableLiveData&lt;MutableList&lt;String&gt;!&gt; but LiveData&lt;String&gt; was expected<\/p><\/blockquote>\n<p>\u3060\u3051\u3069<\/p>\n<pre>val name: LiveData&lt;MutableList&lt;String&gt;&gt; = _name<\/pre>\n<p>\u3053\u3046\u3057\u3066\u307f\u308b\u3002\u3059\u308b\u3068<\/p>\n<pre>fun onNameChange(newName: String) {\r\n    _name.value = newName\r\n}<\/pre>\n<p>\u304c<\/p>\n<blockquote><p>Type mismatch: inferred type is String but MutableList&lt;String&gt;? was expected<\/p><\/blockquote>\n<p>\u307e\u3053\u308c\u306f\u305d\u3046\u3088\u306d\u3002\u3053\u308c\u306f\u3061\u3087\u3063\u3068\u7f6e\u3044\u3068\u3044\u3066\u3002<\/p>\n<p>Main\u306e\u65b9\u3067<\/p>\n<pre>val name: String by jcViewModel.name.observeAsState(\"\")<\/pre>\n<p>\u304c<\/p>\n<blockquote><p>Property delegate must have a &#8216;getValue(Nothing?, KProperty&amp;lt;*&amp;gt;)&#8217; method. None of the following functions is suitable:&lt;br\/&gt;public inline operator fun &amp;lt;T&amp;gt; State&amp;lt;String&amp;gt;.getValue(thisObj: Any?, property: KProperty&amp;lt;*&amp;gt;): String defined in androidx.compose.runtime<\/p><\/blockquote>\n<p>\u3044\u308d\u3044\u308d\u8a66\u3057\u3066<\/p>\n<pre>val name: MutableList&lt;String&gt; by jcViewModel.name.observeAsState(mutableListOf(\"\",\"\",\"\"))<\/pre>\n<p>\u3053\u3046\u3060\u3068\u30a8\u30e9\u30fc\u3067\u306a\u3044\u3002<\/p>\n<pre>HelloContent(name = name, onNameChange = { jcViewModel.onNameChange(it) })<\/pre>\n<p>\u304c<\/p>\n<blockquote><p>Type mismatch: inferred type is MutableList&lt;String&gt; but String was expected<\/p><\/blockquote>\n<p>\u306a\u306e\u3067<\/p>\n<pre>fun HelloContent(name :MutableList&lt;String&gt;, onNameChange: (String) -&gt; Unit) {<\/pre>\n<p>\u3053\u3046\u5909\u3048\u3066\u307f\u308b\u3002\u305d\u3057\u305f\u3089<\/p>\n<pre>OutlinedTextField(\r\n    value = name,\r\n    onValueChange = onNameChange,\r\n    label = { Text(\"Name\") }\r\n)<\/pre>\n<p>\u3053\u308c\u304c<\/p>\n<blockquote><p>None of the following functions can be called with the arguments supplied:&lt;br\/&gt;public fun OutlinedTextField(value: TextFieldValue, onValueChange: (TextFieldValue) -&amp;gt; Unit, modifier: Modifier = &#8230;, enabled: Boolean = &#8230;, readOnly: Boolean = &#8230;, textStyle: TextStyle = &#8230;, label: (() -&amp;gt; Unit)? = &#8230;, placeholder: (() -&amp;gt; Unit)? = &#8230;, leadingIcon: (() -&amp;gt; Unit)? = &#8230;, trailingIcon: (() -&amp;gt; Unit)? = &#8230;, isError: Boolean = &#8230;, visualTransformation: VisualTransformation = &#8230;, keyboardOptions: KeyboardOptions = &#8230;, keyboardActions: KeyboardActions = &#8230;, singleLine: Boolean = &#8230;, maxLines: Int = &#8230;, interactionSource: MutableInteractionSource = &#8230;, colors: TextFieldColors = &#8230;): Unit defined in androidx.compose.material&lt;br\/&gt;public fun OutlinedTextField(value: String, onValueChange: (String) -&amp;gt; Unit, modifier: Modifier = &#8230;, enabled: Boolean = &#8230;, readOnly: Boolean = &#8230;, textStyle: TextStyle = &#8230;, label: (() -&amp;gt; Unit)? = &#8230;, placeholder: (() -&amp;gt; Unit)? = &#8230;, leadingIcon: (() -&amp;gt; Unit)? = &#8230;, trailingIcon: (() -&amp;gt; Unit)? = &#8230;, isError: Boolean = &#8230;, visualTransformation: VisualTransformation = &#8230;, keyboardOptions: KeyboardOptions = &#8230;, keyboardActions: KeyboardActions = &#8230;, singleLine: Boolean = &#8230;, maxLines: Int = &#8230;, interactionSource: MutableInteractionSource = &#8230;, colors: TextFieldColors = &#8230;): Unit defined in androidx.compose.material<\/p><\/blockquote>\n<p>\u3068<\/p>\n<blockquote><p>@Composable invocations can only happen from the context of a @Composable function<\/p><\/blockquote>\n<p>\u305d\u3057\u305f\u3089<\/p>\n<pre>value = name[0],<\/pre>\n<p>\u3053\u3046\u5909\u3048\u305f\u3002Main\u306e\u65b9\u306f\u30a8\u30e9\u30fc\u8868\u793a\u3055\u308c\u306a\u304f\u306a\u3063\u305f\u3002<\/p>\n<p>\u3058\u3083\u3042\u4e0a\u3067\u307b\u3063\u3068\u3044\u305fviewmodel\u306e<\/p>\n<pre>fun onNameChange(newName: String) {\r\n    _name.value = newName\r\n}<\/pre>\n<p>\u3092<\/p>\n<pre>_name.value[0] = newName<\/pre>\n<p>\u3053\u3046\u3057\u305f\u3089<\/p>\n<blockquote><p>Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type MutableList&lt;String&gt;?<\/p><\/blockquote>\n<p>\u306a\u306e\u3067<\/p>\n<pre>_name.value!![0] = newName<\/pre>\n<p>\u3053\u3046\u3057\u3066\u307f\u305f\u3002\u4e00\u5fdc\u3053\u308c\u3067\u30a8\u30e9\u30fc\u306f\u8868\u793a\u3055\u308c\u306a\u304f\u306a\u3063\u305f\u3051\u3069\u2026<\/p>\n<p>\u52d5\u304b\u3057\u3066\u307f\u308b\u3068<\/p>\n<p><iframe loading=\"lazy\" title=\"YouTube video player\" src=\"https:\/\/www.youtube.com\/embed\/jHpOhmuds2U\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>\u3046\u307e\u304f\u52d5\u304b\u306a\u3044\u3002\u3064\u307e\u308a\u306f<\/p>\n<blockquote><p><b>\u6ce8\u610f:<\/b>\u00a0Compose \u306e\u00a0<code dir=\"ltr\" translate=\"no\">ArrayList&lt;T&gt;<\/code>\u00a0\u3084\u00a0<code dir=\"ltr\" translate=\"no\">mutableListOf()<\/code>\u00a0\u306e\u3088\u3046\u306a\u53ef\u5909\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u72b6\u614b\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u3068\u3001\u30a2\u30d7\u30ea\u3067\u8aa4\u3063\u305f\u30c7\u30fc\u30bf\u3084\u53e4\u3044\u30c7\u30fc\u30bf\u304c\u30e6\u30fc\u30b6\u30fc\u306b\u8868\u793a\u3055\u308c\u308b\u73fe\u8c61\u304c\u767a\u751f\u3057\u307e\u3059\u3002<\/p>\n<p><code dir=\"ltr\" translate=\"no\">ArrayList&lt;T&gt;<\/code>\u00a0\u3084\u53ef\u5909\u30c7\u30fc\u30bf\u30af\u30e9\u30b9\u306a\u3069\u306e\u975e\u30aa\u30d6\u30b6\u30fc\u30d0\u30d6\u30eb\u306a\u53ef\u5909\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u3001Compose \u306b\u3088\u308b\u89b3\u6e2c\u304c\u4e0d\u53ef\u80fd\u3067\u3042\u308a\u3001\u5909\u66f4\u3055\u308c\u308b\u3068\u518d\u30b3\u30f3\u30dd\u30b8\u30b7\u30e7\u30f3\u304c\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u975e\u30aa\u30d6\u30b6\u30fc\u30d0\u30d6\u30eb\u306a\u53ef\u5909\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f7f\u7528\u3059\u308b\u4ee3\u308f\u308a\u306b\u3001<code dir=\"ltr\" translate=\"no\">State&lt;List&lt;T&gt;&gt;<\/code>\u00a0\u3084\u4e0d\u5909\u306e\u00a0<code dir=\"ltr\" translate=\"no\">listOf()<\/code>\u00a0\u306a\u3069\u306e\u30aa\u30d6\u30b6\u30fc\u30d0\u30d6\u30eb\u306a\u30c7\u30fc\u30bf\u30db\u30eb\u30c0\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u3059\u3059\u3081\u3057\u307e\u3059\u3002<\/p><\/blockquote>\n<p>\u3053\u308c\u3060\u3002\u304c\u3063\u304f\u3057\u3002<\/p>\n<h2>\u53c2\u8003<\/h2>\n<p><a href=\"https:\/\/developer.android.com\/jetpack\/compose\/state\">https:\/\/developer.android.com\/jetpack\/compose\/state<\/a><\/p>\n<p><a href=\"https:\/\/developer.android.com\/reference\/android\/arch\/lifecycle\/LiveData\">https:\/\/developer.android.com\/reference\/android\/arch\/lifecycle\/LiveData<\/a><\/p>\n<p><a href=\"https:\/\/developer.android.com\/topic\/libraries\/architecture\/livedata#observe_livedata_objects\">https:\/\/developer.android.com\/topic\/libraries\/architecture\/livedata#observe_livedata_objects<\/a><\/p>\n<p><a href=\"https:\/\/developer.android.google.cn\/jetpack\/compose\/libraries#streams\">https:\/\/developer.android.google.cn\/jetpack\/compose\/libraries#streams<\/a><\/p>\n<p><a href=\"https:\/\/developer.android.google.cn\/reference\/kotlin\/androidx\/compose\/runtime\/livedata\/package-summary\">https:\/\/developer.android.google.cn\/reference\/kotlin\/androidx\/compose\/runtime\/livedata\/package-summary<\/a><\/p>\n<p><a href=\"https:\/\/stackoverflow.com\/questions\/47941537\/notify-observer-when-item-is-added-to-list-of-livedata\">https:\/\/stackoverflow.com\/questions\/47941537\/notify-observer-when-item-is-added-to-list-of-livedata<\/a><\/p>\n<p><a href=\"https:\/\/teratail.com\/questions\/181174\">https:\/\/teratail.com\/questions\/181174<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>ViewModel\u3068\u304bLiveData \u3088\u304f\u308f\u304b\u3089\u306a\u3044\u3002\u30df\u30fc\u30e0\u3068\u304b\u3058\u3083\u306a\u304f\u3066\u307b\u3093\u3068\u306b\u3088\u304f\u308f\u304b\u3089\u306a\u3044\u3002\u7279\u306b\u76ca\u306b\u306a\u308b\u3088\u3046\u306a\u4e8b\u306f\u66f8\u3044\u3066\u306a\u3044\u3002 \u30b5\u30f3\u30d7\u30eb build.gradle\u306b implementation &#8220;android &hellip; <a href=\"https:\/\/dalomo.net\/blog\/2021\/04\/11\/1345\/\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1348,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[9],"tags":[3,6,140,143,144],"class_list":["post-1345","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-9","tag-android","tag-androidstudio","tag-jetpackcompose","tag-livedata","tag-viewmodel"],"_links":{"self":[{"href":"https:\/\/dalomo.net\/blog\/wp-json\/wp\/v2\/posts\/1345","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dalomo.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dalomo.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dalomo.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dalomo.net\/blog\/wp-json\/wp\/v2\/comments?post=1345"}],"version-history":[{"count":3,"href":"https:\/\/dalomo.net\/blog\/wp-json\/wp\/v2\/posts\/1345\/revisions"}],"predecessor-version":[{"id":1349,"href":"https:\/\/dalomo.net\/blog\/wp-json\/wp\/v2\/posts\/1345\/revisions\/1349"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dalomo.net\/blog\/wp-json\/wp\/v2\/media\/1348"}],"wp:attachment":[{"href":"https:\/\/dalomo.net\/blog\/wp-json\/wp\/v2\/media?parent=1345"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dalomo.net\/blog\/wp-json\/wp\/v2\/categories?post=1345"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dalomo.net\/blog\/wp-json\/wp\/v2\/tags?post=1345"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}