>

순차적으로 성공적으로 디코딩 한 두 개의 JSON 조각이 있습니다. 나는 새로운 html_fragment 를 가지고 싶습니다  기존 html_fragment 를 업데이트하십시오. . 일반적으로 이것은 간단하지만 데이터 구조로 인해 어려움을 겪고 있습니다.

type PostDataContainer
    = PostDataContainer PostData

type alias PostData =
    { title : String
    , comments : List Comment
    }

type alias Comment =
    { comment_id : Int
    , html_fragment : String
    }

type alias CommentHtml =
    { id : Int
    , html_fragment : String
    }

나는 방금 CommentHtml 를 얻었다  기존 html_fragment 를 업데이트하고 싶습니다  와이즈 비즈 . 이것이 내가 지금까지 가진 것입니다 :

Comment

MergeCommentHtml commentHtmlData -> case commentHtmlData of Err err -> Debug.log ("Error decoding CommentHtmlData" ++ toString err) ( mdl, Cmd.none ) Ok commentHtml -> case mdl.maybePostDataContainer of Just (PostDataContainer postData) -> let updatedCommentData = -- I dont know how to calculate this? in ( { mdl | postData = { postData | comments = updatedCommentData } }, Cmd.none ) 참고  여기는 commentHtml 입니다 . 내 오래된 List CommentHtml 를 업데이트하는 방법에 대한 생각   comment.html_fragment 의 새로운 가치 ?

commentHtml

  • 답변 # 1

    와이즈 위즈를 주다   commentHtmlData 입니다  의견에 따르면 가장 쉬운 방법은 List 로 변환하는 것입니다.   Dict 에 의해 키 , 그런 다음 id 를 찾고있는 기존 주석을 맵핑하십시오.  dict에서. 존재하는 경우 comment_id 를 교체하십시오. 그렇지 않은 경우 수정되지 않은 원본을 반환합니다.

    html_fragment
    
    

  • 답변 # 2

    옵션 1 : 데이터를 그대로 디코딩하십시오. 그것을 표시 할 시간이되면 let commentHtmlDict = commentHtmlData |> List.map (\c -> (c.id, c)) |> Dict.fromList updatedCommentData = postData.comments |> List.map (\comment -> case Dict.get comment.comment_id commentHtmlDict of Just commentHtml -> { comment | html_fragment = commentHtml.html_fragment } Nothing -> comment ) 와 같이 작성한 함수를 통해 적절하게 정렬하십시오. .

    옵션 2 :
    다음 기능을 구현한다고 가정 해보십시오.

    rawJsonDataToNicerData
    
    

    지금 우리가 -- given a new comment, and some PostData, return the new version of the PostData updateData : CommentHtml -> PostData -> PostData -- so now, assuming we can decode a CommentHtml with commentHtmlDeocder -- we can do the following dataUpdaterDecoder : Decoder (PostData -> PostData) dataUpdaterDecoder commentHtmlDecoder |> Decoder.andThen (\commentHtml -> updateData commentHtml) 를 해독하려고 할 때마다  우리는 commentHtmlDeocder 를 해독 할 수 있습니다  대신이 데이터를 사용하여 데이터를 업데이트하십시오.

    다음은 위의 아이디어를 활용 한 관계형 데이터 디코더의 예입니다 :

    https://ellie-app.com/3KWmyJmMrDsa1

    dataUpdaterDecoder

  • 이전 web scraping - 웹 사이트에서 데이터를 긁을 수 없음 - python bs4
  • 다음 html - aframe 360 ​​비디오는 처음에만 표시됩니다 그런 다음 소리 만